Solidity自学:第一天

目录

动态字节数组

string内存原理——特殊动态数组

string处理中文和特殊字符 

固定长度字节数组的转换 


动态字节数组

pragma solidity ^0.4.0;
contract array{
    bytes public name = new bytes(2);

    function InitName(){
        name[0] = 0x7a;
        name[1] = 0x68;
    }
    function getLength() view returns(uint){
        return name.length;
    }
    function changeName(){
        name[0] = 0x88;
    }
    function changeLength(){
        name.length = 5;
    }
    function pushtest(){
        name.push(0x99);//往数组后面添加一个元素,length长度会发生变化
    } 
}

在solidity中,name[]存储的初始化结果为(大小为2):0x0000。这里分析:每两个位就是一个8位的byte,然后把所有组放到一起显示。比如:InitName之后,为0x7a68。changeLength之后,为0x7a68000000。动态数组变现为,pushtest之后,变为:0x7a6800000099,数组长度+1,即从5变成6。

以字节为单位进行操作

string内存原理——特殊动态数组

pragma solidity ^0.4.0;
contract string_{//string内存原理——特殊动态数组
    string name = "huangxiaoming";
    //0x6875616e677869616f6d696e67
    function getLength() returns(uint){
        //return name.length;     !string是没有length属性的
        return bytes(name).length;//这里强转为bytes数组,而bytes数组有length属性
    }
    function changeName() returns(bytes1){//byte是byte1的别名
        //return name[0];    !无法通过下标来获得
        //要通过bytes强转的方式
        return bytes(name)[0];
        //这里会返回两个位:0x6875616e677869616f6d696e67 返回0x68
    }
    function getName() view returns(bytes) {
        return bytes(name);
    }
    function getName2(){
        bytes(name)[0] = 'L';//修改第一个元素
        //结果:0x6875616e677869616f6d696e67——>0x4c75616e677869616f6d696e67
    }
}

string处理中文和特殊字符 

string来存储中文或者特殊字符。特殊字符:每一个占一个字节;中文:每一个字占三个字节。如:熊猫怪:长度为3,0x123456789987654321,共18位(那个0x是我编的,但肯定是18位)

固定长度字节数组的转换 

pragma solidity ^0.4.0;
contract changeBytes{
    bytes12 name = 0x6875616e67786875616e6778;
    function changeBytes1() view returns(bytes1){
        return bytes1(name);//0x68
    }
    function changeBytes2() view returns(bytes2){
        return bytes2(name);//0x6875
    }
    function changeBytes16() view returns(bytes16){
        return bytes16(name);//0x6875616e67786875616e677800000000
    }
}

扫描二维码关注公众号,回复: 14349122 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_62775913/article/details/125448105