我在转换Ethereum事务的日志数据中的负数时遇到了一些问题。在"0xffffffffffffffffffffffffffffffffffffffffffffffdb9a1221071741566a". (日志索引192 )中,主题3被列为这笔交易。

特克斯将该十六进制值转换为小数-671.4275583814931。

我正在努力复制十六进制值到负十进制值的转换。迄今为止:
是否有任何库可以将此十六进制值转换为正确的负值小数点?
发布于 2022-11-29 23:59:47
你从妖术转换中得到的大量数字是正确的。但是,您必须考虑到实体中的整数溢出。
事务日志中的原始值为int256类型。如果将115792089237316195423570985008687907853269984665640564038786156449531636569706转换为int256类型,则得到-671427558381493070230。然后用18个小数,结果是-671.427558381493070230。
在Python中,您可以使用以下代码获得一个int256:
large_number = 115792089237316195423570985008687907853269984665640564038786156449531636569706
size = 256
sign = 1 << size - 1
number_int256 = (large_number & sign-1) - (large_number & sign)https://ethereum.stackexchange.com/questions/93148
复制相似问题