You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solidity合约函数十六进制参数值转换与解码方法咨询

答案

你对布尔类型编码的猜测是正确的。Solidity ABI编码规则中,bool类型会被填充为32字节长度,全0的32字节对应false,末尾为1其余为0的32字节对应true。

uint256十六进制参数解码方法

uint256类型在ABI编码时会统一填充为32字节的十六进制串,也就是你看到的64位(不含0x前缀)的字符串,解码时直接将其视为十六进制整数转换为十进制即可,以下是两种可直接使用的解码方案:

方法1:使用Python解码(无精度损失)

# 第一个参数解码
hex1 = "0000000000000000000000000000000000000000000000a2a15d09519be00000"
num1 = int(hex1, 16)
print(num1) # 输出:120000000000000000000

# 第二个参数解码
hex2 = "000000000000000000000000000000000000000000000002b5e3af16b1880000"
num2 = int(hex2, 16)
print(num2) # 输出:5000000000000000000

方法2:使用浏览器控制台解码

直接打开浏览器F12开发者工具的控制台,输入以下代码即可得到结果,使用BigInt避免大整数精度损失:

const hex1 = "0000000000000000000000000000000000000000000000a2a15d09519be00000"
console.log(BigInt(`0x${hex1}`).toString()) // 输出120000000000000000000

const hex2 = "000000000000000000000000000000000000000000000002b5e3af16b1880000"
console.log(BigInt(`0x${hex2}`).toString()) // 输出5000000000000000000

如果这两个值是代币数量,还需要对应除以对应代币的decimals位(绝大多数代币为18),就能得到常规显示的代币面额:比如第一个值除以1e18等于120,第二个值除以1e18等于5。

内容的提问来源于stack exchange,提问作者Spacebar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 11:48:04