v0.8 不再允许显式 uint->int 转换;最好的新方法?

Buz*_*tti 2 solidity

v0.7.xsolc允许轻松转换uint256int64众所周知的输入uint256完全在int64. 这是一种流行且有用的方法,用于为有符号 64 位整数环境(例如 Java 'long')中的最终操作准备材料:

int64 x = int64(some_uint256);
Run Code Online (Sandbox Code Playgroud)

这已在 v0.8.x 中删除并产生:

Error: Explicit type conversion not allowed from "uint256" to "int64".
Run Code Online (Sandbox Code Playgroud)

uint256v.0.8x 中安全/轻松地将变量“强制转换截断”为较小有符号整数的新最佳实践是什么?

Pet*_*jda 6

您可以先将其转换为 a uint64,然后再转换为int64.

int64 x = int64(uint64(some_uint256));
Run Code Online (Sandbox Code Playgroud)