【Solidity】学习(1)

时间:2024-01-13 10:25:02

string

string类型不可以直接通过length读取字符串长度,也不可以直接通过下标直接访问数据元素

使用的方法是:强制类型转换为bytes

其中," " 和‘ ’都可以表示

pragma solidity ^0.4.0;

contract first{
string public str = 'hello world';
function getstr() returns(uint){
return bytes(str).length;
}
function changestr() {
bytes(str)[0]='b';
}
}

string类型,特殊字和英文字符数字字母占一个字节,中文汉字和中文字符占3个字节

pragma solidity ^0.4.0;

contract first{
string public strCN ="你好,世界";    //中文标点,逗号
string public strSY = "%$#@!";
string public strCNSY = ",。";    //中文标点,逗号和句号
string public str = 'hello world';
function getstr() view returns(uint){
return bytes(str).length;  
}
function getstr1() view returns(uint){
return bytes(strCN).length;
}
function getstr2() view returns(uint){
return bytes(strCNSY).length;
}
}

结果为

【Solidity】学习(1)

 bytes数组转化为string,强制类型转化

pragma solidity ^0.4.0;

contract BytesToString{
bytes public byt = new bytes(2);
function Init(){
byt[0] = 0x7a;
byt[1] = 0x68;
}
function bytesToString()view returns(string){
return string(byt);
}
}

数组

固定长度数组

从前到后截断,在末尾补充0

pragma solidity ^0.4.0;

contract first{
bytes6 public a = 0x1929192031;
function getbyte1() view returns(bytes1){
return bytes1(a);
}
function getbyte4()view returns(bytes4){
return bytes4(a);
}
function getbyte18()view returns(bytes12){
return bytes12(a);
}
}

【Solidity】学习(1)

可变长度数组

bytes a = new bytes(2);

将固定长度数组赋值给可变长度数组

pragma solidity ^0.4.0;

contract first{
bytes6 public str = 0x1929192031;
function getNewStr()view returns(bytes){
// 函数内部加上 memory
bytes memory newstr = new bytes(str.length);
//length为uint类型,因此i要写成uint
for(uint i = 0; i < str.length; ++i){
newstr[i] = str[i];
}
return newstr;
}
}

【Solidity】学习(1)

固定数组

uint [5] arr = [1,2,3,4,5];
//是中括号不是大括号
  • 可以直接获取数组长度,但是不可以修改length,不可以push()

非固定数组

  • 可以直接获取数组长度
  • 可以修改length,补0或者截断
  • 可以push

二维数组

solidity语言二维数组不同于c,java

pragma solidity ^0.4.0;

contract BytesToString{
//定义时候arr[i][j]表示一共j个元素,每个元素有i项
uint[2][3] arr= [[11,22],[33,44],[55,66]];
function sumGrade()view returns(uint){
//调用时候,arr[i][j]表示第i+1行,j+1列的元素
return arr[2][1];
}
}

可变长的的二位数组可以改变数组长度和每行中列的个数

字面量

最小匹配原则

可以强制类型转化