견고성-문자열
Solidity는 큰 따옴표 ( ")와 작은 따옴표 ( ')를 모두 사용하는 문자열 리터럴을 지원하며 문자열 유형의 변수를 선언하기위한 데이터 유형으로 문자열을 제공합니다.
pragma solidity ^0.5.0;
contract SolidityTest {
string data = "test";
}
위의 예에서 "test"는 문자열 리터럴이고 data는 문자열 변수입니다. 더 선호되는 방법은 문자열 작업이 바이트 작업에 비해 더 많은 가스를 필요로하기 때문에 문자열 대신 바이트 유형을 사용하는 것입니다. Solidity는 바이트를 문자열로 또는 그 반대로 내장 변환을 제공합니다. Solidity에서는 문자열 리터럴을 byte32 유형 변수에 쉽게 할당 할 수 있습니다. Solidity는이를 byte32 리터럴로 간주합니다.
pragma solidity ^0.5.0;
contract SolidityTest {
bytes32 data = "test";
}
이스케이프 문자
Sr. 아니. | 캐릭터 및 설명 |
---|---|
1 | \n 새 줄을 시작합니다. |
2 | \\ 백 슬래시 |
삼 | \' 작은 따옴표 |
4 | \" 큰 따옴표 |
5 | \b 역행 키이 |
6 | \f 양식 공급 |
7 | \r 캐리지 리턴 |
8 | \t 탭 |
9 | \v 수직 탭 |
10 | \xNN 16 진수 값을 나타내고 적절한 바이트를 삽입합니다. |
11 | \uNNNN 유니 코드 값을 나타내고 UTF-8 시퀀스를 삽입합니다. |
바이트에서 문자열로 변환
string () 생성자를 사용하여 바이트를 String으로 변환 할 수 있습니다.
bytes memory bstr = new bytes(10);
string message = string(bstr);
예
Solidity에서 문자열이 어떻게 작동하는지 이해하려면 다음 코드를 시도하십시오.
pragma solidity ^0.5.0;
contract SolidityTest {
constructor() public{
}
function getResult() public view returns(string memory){
uint a = 1;
uint b = 2;
uint result = a + b;
return integerToString(result);
}
function integerToString(uint _i) internal pure
returns (string memory) {
if (_i == 0) {
return "0";
}
uint j = _i;
uint len;
while (j != 0) {
len++;
j /= 10;
}
bytes memory bstr = new bytes(len);
uint k = len - 1;
while (_i != 0) {
bstr[k--] = byte(uint8(48 + _i % 10));
_i /= 10;
}
return string(bstr);
}
}
Solidity First Application 장에 제공된 단계를 사용하여 위 프로그램을 실행하십시오 .
산출
0: string: 3