solidity智能合约[11]-字符串-创新互联
字符串
string 类型存储字符串, 在solidity中使用了UTF-8格式来存储字符串。
寻甸网站制作公司哪家好,找
创新互联!从网页设计、网站建设、微信开发、APP开发、
响应式网站设计等网站项目制作,到程序开发,运营维护。
创新互联于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选
创新互联。
1 2 3
| string public name="jonson";//6a6f6e736f6e string public name1="!@#$%^&*())*"; string public name2="我爱你";
|
字符串不能直接的获取长度和内容
下面是错误的方式
1 2 3 4 5 6 7
| // function getLength() returns(uint){ // name.length; // }
// function getName() returns(bytes1) { // return name[0]; // }
|
获取字符串长度和内容和的正确方式
1 2 3 4 5 6 7
| function getLength() public view returns(uint){ return bytes(name).length; }
function getName() public view returns(bytes1){ return bytes(name)[1]; }
|
修改字符串中的内容
1 2 3 4
| function changeName() public{ // bytes(name)[0]=0x55; bytes(name)[0]='P'; }
|
证明中文占了3个字节
1 2 3 4
| string public name2="我爱你"; function getLength3() public view returns(uint){ return bytes(name2).length; }
|
字符串转动态字节数组
1 2 3 4
| function getBytes() public view returns(bytes){
return bytes(name); }
|
完整代码测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| pragma solidity ^0.4.23;
contract StringTest{
string public name="jonson";//6a6f6e736f6e string public name1="!@#$%^&*())*"; string public name2="我爱你";
// function getLength() returns(uint){ // name.length; // } function getLength() public view returns(uint){ return bytes(name).length; } // function getName() returns(bytes1) { // return name[0]; // } function getName() public view returns(bytes1){ return bytes(name)[1]; }
function changeName() public{ // bytes(name)[0]=0x55; bytes(name)[0]='P'; }
function getBytes() public view returns(bytes){
return bytes(name); }
function getLength2() public view returns(uint){ return bytes(name1).length; } function getBytes1() public view returns(bytes){
return bytes(name1); }
function getLength3() public view returns(uint){ return bytes(name2).length; } function getBytes2() public view returns(bytes){
return bytes(name2); } }
|
总结
1、字符串是特殊的动态长度字节数组
2、字符串不能够字节的修改长度和内容,需要转换为bytes动态字节数组
3、字符串在solidity中使用了UTF8格式来存储,所以汉字占了3个字节,英文和特殊字符占了一个字节
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章题目:solidity智能合约[11]-字符串-创新互联
网址分享:
http://azwzsj.com/article/decegj.html