【转载】solidity智能合约[9]-字节数组与运算


#1

byte类型

有byte bytes1 bytes2 … bytes32
特殊的有byte == bytes1

后面的数字代表占了多少字节。1个字节在内存中占了8位

性质

固定字节数组不能修改长度和内容

字节一般用16进制来存储

16进制中的1个数字代表占了4位。

bytes1 public num1 = 0x6a;        //转换为10进制:106
bytes2 public num2 = 0x6a6f;     //转换为10进制:27247

bytes6 public num3 = 0x6a6f6e736f6e;

 bytes1 public a = 0x6a;//转换为2进制:0110   1010     
 bytes1 public b = 0x6f;//转换为2进制:0110   1111

字节可以有长度属性

function getlength() view public returns(uint,uint,uint){
    return (num1.length,num2.length,num3.length);
}

字节可以比较大小

不同类型的字节也可以比较大小

function  test1()  public view returns(bool){
    return  a>b;
}

 function  test2() public view returns(bool){
    return  a>=b;
}

 function  test3()  public  view returns(bool){
    return  a<b;
}
    function  test4() public   view returns(bool){
    return  a<=b;
}

function  test5() public view returns(bool){
    return  a==b;
}

    function  test6() public view returns(bool){
    return  a!=b;
}

 function  test7() public view returns(bool){
    return num2 >num1;
}

字节可以进行位运算

// 0110 1010
// 0110 1111

//&0110 1010   106    0x6a
//|0110 1111   111    0x6f
//^0000 0101   5      0x05
//~1001 0101   149    0x95
//<1101 0100   212    0xd4
//>0011 0101   53     0x35
 function  weiTest1() public view returns(bytes1){
    return a & b;
}
   function  weiTest2() public view returns(bytes1){
    return a | b;
}
   function  weiTest3() public view returns(bytes1){
    return a ^ b;
}
   function  weiTest4() public view returns(bytes1){
    return ~a;
}

   function  weiTest5() public view returns(bytes1){
    return a<<1;
 }
   function  weiTest6() public view returns(bytes1){
    return a >>1;
}

完整代码

pragma solidity ^0.4.23;


contract  bytesTest{
    //0x6a6f6e736f6e
    bytes1 public num1 = 0x6a;        //106
    bytes2 public num2 = 0x6a6f;     //27247

    bytes6 public num3 = 0x6a6f6e736f6e;

     bytes1 public a = 0x6a;//0110   1010      106
     bytes1 public b = 0x6f;//0110   1111      111



    function getlength() view public returns(uint,uint,uint){
        return (num1.length,num2.length,num3.length);
    }

    // function changeLength()  public {
    //     num1.length = 9;
    // }

    function  test1()  public view returns(bool){
        return  a>b;
    }

     function  test2() public view returns(bool){
        return  a>=b;
    }

     function  test3()  public  view returns(bool){
        return  a<b;
    }
        function  test4() public   view returns(bool){
        return  a<=b;
    }

    function  test5() public view returns(bool){
        return  a==b;
    }

        function  test6() public view returns(bool){
        return  a!=b;
    }

     function  test7() public view returns(bool){
        return num2 >num1;
    }


    // 0110 1010
    // 0110 1111

    //&0110 1010   106    0x6a
    //|0110 1111   111    0x6f
    //^0000 0101   5      0x05
    //~1001 0101   149    0x95
    //<1101 0100   212    0xd4
    //>0011 0101   53     0x35
     function  weiTest1() public view returns(bytes1){
        return a & b;
    }
       function  weiTest2() public view returns(bytes1){
        return a | b;
    }
       function  weiTest3() public view returns(bytes1){
        return a ^ b;
    }
       function  weiTest4() public view returns(bytes1){
        return ~a;
    }

       function  weiTest5() public view returns(bytes1){
        return a<<1;
     }
       function  weiTest6() public view returns(bytes1){
        return a >>1;
    }

}
  • 本文链接: <https ://dreamerjonson.com/2018/11/14/solidity-9/>
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!