一、定长字节数组
与java的byte类型不同,solidity在定义字节类型时,可以指定字节的长度,但这个长度是固定的。
同整型一样,可以通过bytes1
, bytes2
, bytes3
, …, bytes32
来定义字节数组。
注意, byte
是 bytes1
的别名, 那bytes呢? 这是byte[]的同义词。
也可以将 byte[]
当作字节数组使用,但这种方式非常浪费存储空间,准确来说,是在传入调用时,每个元素会浪费 31 字节, 更好地做法是使用 bytes
。
二、初始值
注意,bytesM类型的初始值,不是Null,而是将各个字段置零。
pragma solidity ^0.4.24;
contract BytesType {
function initVaue() public pure returns(bytes1, bytes2, bytes8){
bytes1 a ;
bytes2 b ;
bytes8 c ;
return (a, b, c);
}
}
返回值:
0: bytes1: 0x00
1: bytes2: 0x0000
2: bytes8: 0x0000000000000000
三、运算符
- 比较运算符:
<=
,<
,==
,!=
,>=
,>
(返回布尔型) - 位运算符:
&
,|
,^
(按位异或),~
(按位取反),<<
(左移位),>>
(右移位) - 索引访问:如果
x
是bytesI
类型,那么x[k]
(其中0 <= k < I
)返回第k
个字节(只读)。
四、成员变量
.length
表示这个字节数组的长度(只读).
五、十六进制常量(Hexadecimal literals)
十六进制常量,以关键字hex打头,后面紧跟用单或双引号包裹的字符串,内容是十六进制字符串,如hex”001122ff”。 它的值会用二进制来表示。
十六进制常量和字符串常量类似,也可以转换为字节数组。
感谢您对本文的关注,如果您对区块链技术有兴趣,可以加入我们一起探讨, 请扫码关注“可可链”的微信公众号,并留言“加入可可链”。
本文欢迎转载,转载时请注明本文来自 微信公众号“可可链”。