solidity异常记录

记录一些在编写solidity中遇到的异常

负数转为uint256

solidity中将一个负数强制转为uint256时,solidity会直接将其二进制补码解释为一个无符号整数

  • 例如:-1 的二进制补码是全 1,转为uint256后会变成2^256-1
  • 将负数-0.008396714242162444 ether,转为uint256会得到下面这个非常大的数,实际上是2^256 - 0.008396714242162444 ether 的结果 115792089237316195423570985008687907853269984665640564039457584007913129639935
    int256 negative_1 = -1;
    int256 negative_2 = -0.008396714242162444 ether;
    uint256 a = uint256(negative_1);
    uint256 b = uint256(negative_2);
本文总阅读量 次 本文总访客量 人 本站总访问量 次 本站总访客数
使用 Hugo 构建
主题 StackJimmy 设计