견고성-문자열

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