通學智慧型合約系列(六) 位元組陣列

2021-10-19 05:31:52 字數 1272 閱讀 2615

關鍵字有:bytes1,bytes2mbytes3,…,bytes32(以步長1遞增)。byte代表bytes1。

pragma solidity ^

0.4.16;​

contract bytearray

固定長度位元組陣列對於數值來說,有點等同於我們的uint。乙個位元組等於8位。即bytes1 有點等同於uint8,至少在位數上是相等的。

上面的例子,我們同時引入了乙個public修飾合約成員變數的範例,在solidity中,直接用public宣告成員變數,編譯部署後,會為我們生成乙個預設的get方法,讓我們可以直接呼叫這個成員屬性。說起來還真的挺方便的呢。

剛才我們說過,位元組陣列byte和uint的記憶體模型是一樣的,那麼位元組陣列直接肯定也是可以進行一些運算操作的,支援的操作有布林運算和位運算,這裡就不再做過多贅述,大家可以參照我之前的位運算進行演練。

此外大家要注意,固定長度位元組陣列作為乙個整體,其內部某個欄位是不能夠被修改的。會報錯~

上面我們知道了,固定長度自己陣列內容是不能被修改的,那麼我想要修改怎麼辦呢。這就要拿出我們的動態長度位元組陣列了。他不但可以修改其內容,也可以修改其長度。下面我們來看看吧。

我們這裡可以依次執行getlength,initname,name,changname,name,changelength,getlength看看結果。會發現,改變陣列就是這麼任性。

此外,我們的動態陣列,還提供了乙個push方法,可以在我們自己陣列的末尾繼續新增我們的位元組元素。

function pushtest()

執行後,我們會發現,新增的位元組會追加在我們原始位元組的末尾,並且陣列的長度也會發生相應改變。

這節,我們先簡單開了個陣列的頭頭。下節,我們將介紹我們一種特殊的動態自己陣列,也就是我們的字元陣列,字串。敬請期待吧。

通學智慧型合約系列(七) 字串

字串 我們都知道字串在其他程式語言中,都是出場率相當高的乙個角色,重要程度不言而喻。在solidity中也不例外。在上節我們學習了動態位元組陣列,而我們的字串,可不可以按照動態位元組的陣列去獲取他的長度和其中的元素呢?我們寫乙個例子來看看吧。pragma solidity 0.4.16 contra...

通學智慧型合約系列(四) 整型運算

2.整型與算術運算 在solidity中,基本的整型有int 有符號整型,有正有負 和uint 無符號整型,無負數 並且他們以8位為區間,int支援int8,int16,int24至int256,uint同理。int預設為int256,uint預設為uint256.思考一下,為什麼solidity要...

tcp和udp的0位元組資料

網上許多部落格討論了tcp和udp的0位元組資料問題,如 1 tcp和udp都能傳送0位元組的資料報,windows下通過getlasterror檢視返回值為0 2 tcp傳送0位元組的資料報後,接收方呼叫recv不會接收到該資料報 3 udp傳送0位元組的資料報後,接收方呼叫recvfrom能夠接...