Solidify实现一个智能合约9(数组和string之间的转换关系)
固定大小字节数组之间的转换
固定大小字节数组,我们可以通过bytes1~32来进行声明,固定大小字节数组的长度不可变,内容不可修改。
pragma solidity ^0.4.4;
contract Test {bytes5 public g = 0x6869736565; //hiseefunction getBytesLength() constant returns (uint) {return g.length;}function gTobytes2() constant returns (bytes2) {return bytes2(g);}function gTobytes10() constant returns (bytes10) {return bytes10(g);}
}
说明:转长的字节数组,后面填0。转短的字节数组,截断后面的。
固定大小字节数组转动态大小字节数组
pragma solidity ^0.4.4;
contract Test {bytes5 public b = 0x6869736565; //hiseefunction jingZhuanDong() constant returns (bytes) {bytes memory b1 = new bytes(b.length);for(uint i=0;i<b.length;i++){b1[i] = b[i];}return b1;}
}
固定大小字节数组不能直接转换为string
动态大小字节数组转string
pragma solidity ^0.4.4;
contract Test {bytes5 public b = 0x6869736565; //hiseebytes names = new bytes(2);bytes name = new bytes(b.length);function Test() {names[0]=0x68;names[1]=0x69;for(uint i=0;i<b.length;i++){name[i] = b[i];}}function namesToString() constant returns (string) {return string(names);}function nameToString() constant returns (string) {return string(name);}
}
本身就是动态大小字节数组
固定大小字节数组转string,需先转动态字节数组后再转string
pragma solidity ^0.4.4;
contract Test {bytes5 public b = 0x6869736565; //hiseefunction bytes32ToString(bytes32 x) constant returns (string) {bytes memory bytesString = new bytes(32);uint charCount = 0;for(uint i=0;i<32;i++){byte char = byte(bytes32(uint(x)*2**(8*i)));//左移2的(8*i)次方,下同// byte char = byte(bytes32(uint(x) << (8*i)));if(char!=0){bytesString[charCount] = char;charCount++;}}bytes memory bytesStringTrimmed = new bytes(charCount);for(i=0;i<charCount;i++){bytesStringTrimmed[i] = bytesString[i];}return string(bytesStringTrimmed);}}
Solidify实现一个智能合约9(数组和string之间的转换关系)相关推荐
- Solidify实现一个智能合约2(属性和行为的访问权限)
属性的访问权限 属性:状态变量 属性的权限有三种:public internal private pragma solidity ^0.4.4;/* 属性的权限有三种:public internal ...
- Solidify实现一个智能合约12(字典/映射)
语法 mapping(_keyType => _ValueType) 字典/映射其实就是一个一对一键值对存储关系. 举个例子:{age:18,stuId:10003,name:"His ...
- Solidify实现一个智能合约16(创建一个简单的代币)
创建一个工程,新建一个EncryptedToken合约. 代码如下: pragma solidity ^0.4.4;contract EncryptedToken {uint INITIAL_SUPP ...
- Solidify实现一个智能合约10(一维数组和二维数组)
固定长度的数组 固定长度类型数组的声明及其通过length方法获取数组长度求和. pragma solidity ^0.4.4; /* 数组一旦创建,长度不可变 但里面的内容可变 */ contrac ...
- Solidify实现一个智能合约7(固定大小字节数组)
固定大小字节数组 固定大小字节数组可以通过bytes1,bytes2,bytes3,...,bytes32来进行声明.PS:byte的别名就是bytes1. bytes1只能存储1个字节,也就是二进制 ...
- Solidify实现一个智能合约17(创建BLC币)
创建文件夹:mkdir BLC 进入后执行:truffle init 再执行:npm init,一直回车 再执行:npm install zeppelin-solidity hisee@liu:/me ...
- Solidify实现一个智能合约14(元组)
定义 元组使用小括号,只需要在括号中添加元素,并使用逗号隔开即可. PS:元组中各个元素的类型可以不一样,但数组中的元素必须一样. 示例1 pragma solidity ^0.4.4; contra ...
- Solidify实现一个智能合约3(单继承与多继承)
单继承 方法/函数的继承 代码示例 pragma solidity ^0.4.4;contract Animal {uint _weight;uint private _height;uint int ...
- Solidify实现一个智能合约11(结构体)
结构体的声明 pragma solidity ^0.4.4;contract Students {struct Person {uint age;uint stuId;string name;}Per ...
最新文章
- java对象转json字符串日期格式_fastJSON字符串类型数据中的日期转换为Java bean的日期对象...
- 探寻阿里云服务器迈入2.0时代的技术要点
- python 将数组中取某一值的元素全部替换为其他元素的方法
- python基础知识~ 等值判断和码
- mysql错误修改数据_使用正则表达式快速修改mysql中错误的varchar类型数据
- TCP协议详解----Linux学习笔记
- rxjs里combineLatest operators的用法
- php 采集程序 宋正河
- Neural Architecture Search(NAS)强化学习寻找最优网络、NASNet、MNASNet
- AVR单片机(ATmega128)单片机运算乘除法大约所需时间
- PHP实现手机号码归属地查询
- 生命即便卑微如尘,即便困顿,依然是美景。
- 抖音上用计算机算66,抖音年龄计算器
- 有什么md5修改工具?快把这些工具收好
- python如何写生日快乐说说_抖音上很火的生日句子,适合过生日发的高逼格
- 苹果cms模板_苹果cms10好看的模板有那些?
- 北京交通拥堵问题及其建议
- SAP中MIGO收货时分清采购订单和订单收货的区别
- 财路网每日原创推送:区块链技术热下的“冷思考”
- keil5 中的wraing:no previous prototype SystemInit