Solidity 类型地址不可转换为 uint256 类型

Zer*_*ham 0 solidity

我创建了一个结构数组,然后尝试获取数组中每个帐户的值。但是我在传递包含地址变量的数组时失败了,msg.sender并且类型不能明显地转换为uint256. 我该怎么做?

cfl*_*y24 9

从 Solidity v0.8 开始,您不能再显式地从addressto 进行转换uint256

您现在可以使用:

uint256 i = uint256(uint160(address(msg.sender)));
Run Code Online (Sandbox Code Playgroud)
function f(address a) internal pure returns (uint256) {
  return uint256(uint160(a));
}
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以显式地转换它:

uint256 i = uint256(msg.sender);
Run Code Online (Sandbox Code Playgroud)
function f(address a) constant returns (uint256) {
    return uint256(a);
}
Run Code Online (Sandbox Code Playgroud)