什么是十六进制转十进制换算器?
十六进制转十进制换算器读取 0xde0b6b3a7640000 这样的 16 进制字符串,返回同一数字的 10 进制形式(此处为 1,000,000,000,000,000,000,即 1018),反之亦然。区块链开发中的数字最大可达 256 位,因此换算器必须使用任意精度整数,并同时显示 32 字节零填充的字以及 EVM 使用的有符号(int256)解读。
常用数值
| 十进制 | 十六进制 | 含义 |
|---|---|---|
| 1,000,000 | 0xf4240 | 1 USDT / USDC(6 位小数) |
| 1,000,000,000 | 0x3b9aca00 | 1 gwei 对应的 wei;1 SOL 对应的 lamports |
| 1018 | 0xde0b6b3a7640000 | 1 ether 对应的 wei |
| 264 − 1 | 0xffffffffffffffff | uint64 最大值 |
| 2128 − 1 | 0xffff…ffff(32 个 f) | uint128 最大值 |
| 2256 − 1 | 0xffff…ffff(64 个 f) | uint256 最大值,即“无限”授权额度 |
实例演示
读取某个存储槽返回 0x00000000000000000000000000000000000000000000000000000000000f4240。去掉前导零后剩下 0xf4240 = 15×164 + 4×163 + 2×162 + 4×16 + 0 = 983,040 + 16,384 + 512 + 64 = 1,000,000,即 6 位小数单位下的 1 USDT。由 64 个 f 组成的字作为 uint256 是 2256 − 1,作为 int256 则是 −1,合约就是这样存储负一的。
常见错误
- 把十进制字符串当作十六进制。
1000000按十进制是一百万,按十六进制则是 16,777,216。本页把纯数字输入视为十进制,除非你加上0x。 - 在电子表格中丢失精度。超过 253(约 9 × 1015)的值会被双精度浮点数舍入;wei 和 18 位小数的代币数量都会超出这一范围。
- 忽略符号。首个十六进制位为 8 或更大的字,其最高位已置位,可能表示一个负的 int256,而不是一个巨大的 uint256。
- 奇数长度的十六进制。
0xabc是有效数字,但不是整数个字节;前导半字节补齐后占 2 字节。