字串
我們都知道字串在其他編程語言中,都是出場率相當高的一個角色,重要程度不言而喻,在solidity中也不例外,在上節我們學習了動態位元組陣列,而我們的字串,可不可以按照動態位元組的陣列去獲取他的長度和其中的元素呢?我們寫一個例子來看看吧,
pragma solidity ^0.4.16;
contract DynamicString{
string name = "tongxuejava";
function getLength() returns(uint){
return name.length;
}
function getPartName() returns(bytes1){
return name[0];
}
}
執行編譯后,我們發現string并沒有給我們提供長度屬性,也不能通過陣列下標的形式獲取其中的字符,這種方式顯然是不行,
那怎么實作我們的這種訴求呢?
當然 ,我們可以想辦法,向我們的動態位元組陣列靠攏,例如下面方法就可以實作
pragma solidity ^0.4.16;
contract DynamicString{
string name = "tongxuejav";
function getLength() returns(uint){
return bytes(name).length;
}
function getPartName() returns(bytes1){
return bytes(name)[0];
}
function changeName() {
bytes(name)[0] = 'T';
}
}
主要就是通過bytes()進行了強制轉換,
同時我們注意到,我們的一個英文字符恰好占用了一個位元組,那么我們輸入中文呢?
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-93F4nuOA-1613309690737)(C:\Users\49178\AppData\Roaming\Typora\typora-user-images\image-20210207215642389.png)]](https://img.uj5u.com/2021/02/16/225109161536441.png)
如圖,我們可以看到一個漢字占3個位元組,這是因為我們的漢字在記憶體中是通過UTF8型別存盤的,至于其他一些特殊字符和數字,當然也是一個字符占用一個位元組啦,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/260125.html
標籤:區塊鏈
上一篇:Cesium 2020回顧
