solidity-address、bytes数据类型赋初值、置空、判断是否为空

一、address数据类型
solidity中不存在"undefined或"null"值的概念,但新声明的变量有对应的默认值。
address是20字节的数据类型,大小为160(bit)位或20(byte)字节,默认值为0x0,用于存储以太坊账户地址。

下面是address类型的默认值、判断是否为空、判断是否相等的代码:

pragma solidity >=0.6.0<0.9.0;

contract otherTest{
    address public a1;//系统默认值
    address public a2 = address(0x0);//赋空置
    //判断address类型是否为空
    function isNull() public view returns(bool){
        if(a1 == address(0x0))
            return true;
        else
            return false;
    }
    //判断两个address类型是否相等
    function isEqual() public view returns(bool){
        if(a1 == a2)
            return true;
        else
            return false;
    }
}

 remix运行结果如下(需科学联网):

二、bytes数据类型

solidity具有多种字节数据类型,固定大小字节数组数据类型的范围为bytes1~bytes32,不定长字节数组类型声明为bytes,默认值均为"",而不是0x0(这样写会报错)或"0x0"。

下面是bytes类型的默认值、判断是否为空、判断是否相等的代码:

pragma solidity >=0.6.0<0.9.0;
contract otherTest{
    bytes1 public b1;
    bytes8 public b8;
    bytes32 public b32;
    bytes public b;
    bytes public bd = "";//赋空值
    //判断bytes是否为空
    function isNull() public view returns(bool){
        if(b.length == 0)
            return true;
        else
            return false;
    }
    //判断两个非空bytes类型的数据是否相等
    function isEqual() public view returns(bool){
        bytes memory a1 = "75048074384425574039e8f";
        bytes memory a2 = "75048074384425574039e8f";
        if(a1.length == a2.length){
            for(uint i = 0;i<a1.length;++i){
                if(a1[i] != a2[i])
                    return false;
            }
        }else{
            return false;
        }
        return true;
    }
}

  remix运行结果如下(需科学联网):

 

posted on 2022-06-25 13:00  尽管我们手中空无一物  阅读(1464)  评论(0编辑  收藏  举报