Appearance
类型转换
Solidity 有多种数据类型(例如,布尔型,整数型,地址型等),有时需要将一个数据类型转换为另一个数据类型。这叫做类型转换。
下面是一些 Solidity 类型转换的例子:
1. 将 string 类型转换为 bytes 类型:
solidity
string memory str = "Hello world";
bytes memory bts = bytes(str);2. 将 string 类型转换为整数型 uint8:
solidity
string memory str = "10";
uint8 num = uint8(bytes(str)[0] - 48);3. 将整数型 uint 转换为字符串 string 类型:
solidity
uint num = 10;
string memory str = uint2str(num);
function uint2str(uint _i) internal pure returns (string memory str) {
if (_i == 0) {
return "0";
}
uint j = _i;
uint length;
while (j != 0) {
length++;
j /= 10;
}
bytes memory bstr = new bytes(length);
uint k = length - 1;
while (_i != 0) {
bstr[k--] = byte(uint8(48 + _i % 10));
_i /= 10;
}
str = string(bstr);
}上面的第三个例子是一个函数,将一个 uint 型变量转换为字符串 string 类型。
函数遍历变量的每一位,将其转换为对应的 ASCII 码 并存储在 bytes 类型的变量 bstr 中,最后将其转换为 string 类型并返回。
这些例子可以在 Remix 编译器中进行演示。复制上述代码,粘贴到 Remix 编辑器的合约编辑器中,然后单击 编译 按钮。
如果没有错误,您可以在合约运行期间测试这些函数。