定長字節(jié)數(shù)組(Fixed-size byte arrays)
定長字節(jié)數(shù)組可以通過 bytes1
, bytes2
, bytes3
, …, bytes32
來進(jìn)行聲明。
byte
默認(rèn)就是 `bytes1
-
bytes1
只能存儲一個
字節(jié)公条,也就是二進(jìn)制8位
的內(nèi)容拇囊。 -
bytes2
只能存儲兩個
字節(jié),也就是二進(jìn)制16位
的內(nèi)容靶橱。 -
bytes3
只能存儲三個
字節(jié)寥袭,也就是二進(jìn)制24位
的內(nèi)容。 - ……
-
bytes32
能存儲三十二個
字節(jié)关霸,也就是二進(jìn)制32 * 8 = 256
位的內(nèi)容传黄。
使用指定長度的命名方式
bytes
,不是byte
队寇,多一個s膘掰,不然編譯報錯Error: Identifier not found or not unique
操作運算符
- 比較運算符:
<=
,<
,==
,!=
,>=
,>
- 位操作符:
&
,|
,^(異或)
,~ (取反)
,<< (左移)
,>> (右移)
- 索引訪問:如果
x
是一個bytesI
,那么可以通過x[k](0 < k < I)
獲取對應(yīng)索引的字節(jié),PS:x[k]是只讀佳遣,不可寫识埋。
成員函數(shù)
-
.length
返回字節(jié)的個數(shù)。(只讀)
pragma solidity ^0.4.0;
contract C {
bytes3 public name = "wsj";
function gByteLength() constant returns (uint) {
return name.length;
}
}
不可變深度解析
長度不可變
pragma solidity ^0.4.0;
contract C {
bytes3 name = "wsj";
function setNameLength(uint length) {
//編譯錯誤
name.length = length;
}
}
內(nèi)部字節(jié)不可修改
pragma solidity ^0.4.0;
contract C {
bytes3 name = "wsj"
function setNameFirstByte(byte b) {
// 編譯錯誤
name[0] = b;
}
}
總結(jié)
bytesI(1 <= I <= 32)
可以聲明固定字節(jié)大小的字節(jié)數(shù)組變量零渐,一旦聲明窒舟,內(nèi)部的字節(jié)和字節(jié)數(shù)組長度不可修改,當(dāng)然可以通過索引讀取(只讀)對應(yīng)索引的字節(jié)诵盼,或者通過length
讀取字節(jié)數(shù)組的字節(jié)數(shù)惠豺。