【solidity基础】 固定长度字节数组

在学习solidity的固定长度数组之前,首先需要明白的一点是,字节是用16进制表示的

在16进制所表示的字节规则中,两个数字/字母占一个字节。
如 aa 所占的16进制字节数组长度为1。
b7ab 所占的16进制字节数组长度为2.
f9a8b7b9c521 所占的16进制字节数组长度为6.

变量类型的bytes1和bytes2等等是代表定义固定长度的字节数组。
其后面的数字代表了固定的长度,如bytes1则代表固定的数组长度为1bytes10则代表固定的数组长度为10.

需要注意的是,在solidity中,在为其字节类型的变量赋值时,值前面必须要加上’0x'才可以,否则编译失败。
而且,长度的计算标准,也是忽略了’0x’。

而string字符串等数据,可以转换为16进制(也就是字节)来进行变量值的赋值和定义。

而在智能合约中,经常会出现用字节数组代替字符串去声明变量值的用法。

pragma solidity ^0.4.16;

contract bytesArray {
    // 字节数组长度1,超过则报错     ‘aa'占长度1.
    bytes1 public length1 = 0xaa; // (二进制)10101010 --> aa  
    
    //字节数组长度2,超过则报错      ‘b7ab'占长度2.
    bytes2 public length2 = 0xb7ab;//(二进制) 1011011110101011 --> b7ab
    //字节数组长度6,超过则报错      ‘f9a8b7b9c521'占长度6.
    bytes6 public length6 = 0xf9a8b7b9c521;//(二进制) 111110011010100010110111101110011100010100100001 --> f9a8b7b9c521
    
    //字节数组长度11,超过则报错     ’68656c6c6f20776f726c64‘占长度11
    bytes11  public length10 = 0x68656c6c6f20776f726c64;// (字符串) hello world --> 68656c6c6f20776f726c64
    
    
}

在这里插入图片描述

附上两个页面:
1,在线进制转换:
https://tool.oschina.net/hexconvert

2,字符串与16进制转换:http://tools.bugscaner.com/text/zifuchuanzhuanhex.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值