Conversor Hex ↔ Decimal para Números Grandes

Cole um valor 0x de calldata, de um slot de armazenamento ou de uma resposta RPC e obtenha sua forma decimal, ou faça o caminho inverso. Precisão arbitrária, com o preenchimento de palavra de 32 bytes e a interpretação com sinal que o trabalho com EVM exige.

Aceita decimal, hex 0x, binário 0b, octal 0o, hex sem prefixo contendo a–f, números negativos, e sublinhados ou vírgulas como separadores. Tamanho arbitrário.

Calculado no seu navegador com JavaScript. Os endereços nunca são enviados nem armazenados.

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

DecimalHexSignificado
1.000.0000xf42401 USDT / USDC (6 decimais)
1.000.000.0000x3b9aca001 gwei em wei; 1 SOL em lamports
10180xde0b6b3a76400001 ether em wei
264 − 10xffffffffffffffffmáximo de uint64
2128 − 10xffff…ffff (32 f)máximo de uint128
2256 − 10xffff…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

Fluxo de trabalho típico

  1. Copie uma palavra do detalhamento de calldata no decodificador ABI ou de um slot de armazenamento num explorador de blocos.
  2. 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.
  3. Se o valor parecer 0xffff…, confira a linha int256: pode ser um número negativo ou uma allowance "infinita".

Perguntas frequentes

Por que não usar um conversor hex comum?

A maioria converte por meio de números de 64 bits ou de ponto flutuante e perde dígitos silenciosamente acima de cerca de 16 casas decimais. Palavras da EVM têm 256 bits, então um saldo de token como 0xde0b6b3a7640000 (1018) já os quebra. Esta página usa inteiros de precisão arbitrária.

O que é a linha bytes32?

O valor preenchido com zeros à esquerda até 32 bytes (64 caracteres hex), que é como ele aparece como palavra em calldata, dados de retorno, armazenamento e dados de eventos.

Como o int256 é tratado?

Se um valor sem sinal tem o bit mais alto ligado (maior que 2255 − 1), a página também mostra o número negativo que ele representa em complemento de dois; para uma entrada negativa, mostra a palavra de 32 bytes que um contrato armazenaria.

Aceita hex sem 0x?

Sim, quando a string contém pelo menos uma letra a–f. Uma string só de dígitos é lida como decimal; adicione 0x para forçar hex.

Como converto hex em decimal à mão?

Multiplique cada dígito por 16 elevado à sua posição a partir da direita, começando em 0, e some tudo: 0x2a = 2×16 + 10 = 42. As letras a–f representam 10–15. Para valores de 64 dígitos a aritmética é tediosa, e é para isso que esta página serve.

Por que as respostas RPC do Ethereum usam hex?

A especificação JSON-RPC codifica todas as quantidades como strings hex com prefixo 0x e sem zeros à esquerda, para que valores de 256 bits sobrevivam a parsers JSON que só suportam números de 64 bits. Números de bloco, saldos, gas e nonces chegam todos assim.

O que o tamanho em bytes me diz?

Quantos bytes o número precisa sem preenchimento. Útil para verificar se um valor cabe em um uint8, uint64, uint128, e se um valor do tamanho de um endereço (20 bytes) foi passado onde se esperava um uint.