O que é um conversor de hex para decimal?
Um conversor de hex para decimal lê uma string em base 16 como 0xde0b6b3a7640000 e retorna o mesmo número em base 10 (aqui 1.000.000.000.000.000.000, ou 1018), e vice-versa. Para trabalho com blockchain os números chegam a 256 bits, então o conversor precisa usar inteiros de precisão arbitrária e também mostrar a palavra de 32 bytes preenchida com zeros e a leitura com sinal (int256) que a EVM usa.
Valores úteis
| Decimal | Hex | Significado |
|---|---|---|
| 1.000.000 | 0xf4240 | 1 USDT / USDC (6 decimais) |
| 1.000.000.000 | 0x3b9aca00 | 1 gwei em wei; 1 SOL em lamports |
| 1018 | 0xde0b6b3a7640000 | 1 ether em wei |
| 264 − 1 | 0xffffffffffffffff | máximo de uint64 |
| 2128 − 1 | 0xffff…ffff (32 f) | máximo de uint128 |
| 2256 − 1 | 0xffff…ffff (64 f) | máximo de uint256, o valor de approve "ilimitado" |
Exemplo prático
A leitura de um slot de armazenamento retorna 0x00000000000000000000000000000000000000000000000000000000000f4240. Removendo os zeros à esquerda sobra 0xf4240 = 15×164 + 4×163 + 2×162 + 4×16 + 0 = 983.040 + 16.384 + 512 + 64 = 1.000.000, que é 1 USDT em unidades de 6 decimais. Uma palavra com 64 caracteres f é 2256 − 1 como uint256 mas −1 como int256, que é como um contrato armazena menos um.
Erros comuns
- Ler uma string decimal como hex.
1000000é um milhão em decimal, mas 16.777.216 em hex. A página trata entradas só de dígitos como decimal, a menos que você adicione0x. - Perder precisão numa planilha. Valores acima de 253 (cerca de 9 × 1015) são arredondados por floats de precisão dupla; wei e quantidades de tokens com 18 decimais ultrapassam isso.
- Esquecer o sinal. Uma palavra cujo primeiro dígito hex é 8 ou maior tem o bit mais alto ligado e pode representar um int256 negativo em vez de um uint256 enorme.
- Hex de comprimento ímpar.
0xabcé um número válido, mas não um número inteiro de bytes; ocupa 2 bytes depois que o nibble inicial é preenchido.
Fluxo de trabalho típico
- Copie uma palavra do detalhamento de calldata no decodificador ABI ou de um slot de armazenamento num explorador de blocos.
- Cole aqui para lê-la como uma quantidade decimal; depois divida pelos decimais do token com o conversor de decimais de token ou o conversor de unidades do Ethereum.
- Se o valor parecer 0xffff…, confira a linha int256: pode ser um número negativo ou uma allowance "infinita".