solidity string 类型与bytes类型相互转换

914 阅读1分钟

solidity string 类型不能直接修改值,只能转换为bytes类型才可以 string 类型不能直接获取length长度 、

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.8.0;

contract ByteStringsol {

    //创建两个类型
    string name = "hongweijiang";
    
    bytes name2 = new bytes(2);
   
    function getNameLength() public view returns(uint) {
        return bytes(name).length;
    }
     
      function getName() public view returns(uint) {
        return bytes(name).length;
    }

    function changeName()  public view returns(bytes memory) {
       return bytes(name);
    }
    // 修改name的值
     function changeName1() public {
       bytes(name)[1] = 'Y'; //修改name
    }
     function getName1() public view returns(string memory) {
       return name;  // hYngweijiang
    }
     // 初始化name2 的值
      function init() public {
       name2[0] =0x7a;
       name2[1] =0x68;
    }
        // 将name2 bytes类型强制转换为string类型
       function getName2() public view returns(string memory) {
       return string (name2);   //zh
    }

    
}