Skip to content

类型转换

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 编辑器的合约编辑器中,然后单击 编译 按钮。

如果没有错误,您可以在合约运行期间测试这些函数。