Адрес Solidity-Type, не преобразуемый в тип uint256

Я создал массив структур, а затем попытался получить значения каждой учетной записи массива. Но мне не удалось с массивом при передаче адресной переменной, которая содержит msg.sender и тип не является явно конвертируемым в uint256, Как мне это сделать?

3 ответа

Начиная с Solidity v0.8, вы больше не можете использовать addressк uint256.

Теперь вы можете использовать:

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

Вы можете привести это явно:

uint256 i = uint256(msg.sender);

function f(address a) constant returns (uint256) {
    return uint256(a);
}

До версии Solidity 0.8.0 вы могли:

      pragma <0.8.0;

return address(toUint(item));

Post v0.8.0 Solidity, который вы должны сделать сейчас:

      pragma ^0.8.0

return address(uint160(toUint(item)));
  • использованная литература

address(uint)а также uint(address): преобразование категории типа и ширины. Замените это на address(uint160(uint)а также uint(uint160(address))соответственно.

см. критические изменения версии 0.8.0, документацию Solidity

Другие вопросы по тегам