Conversor hex ↔ decimal para números grandes

Pega un valor 0x de un calldata, un slot de almacenamiento o una respuesta RPC y obtén su forma decimal, o haz el camino inverso. Precisión arbitraria, con el relleno a palabra de 32 bytes y la interpretación con signo que el trabajo con la EVM requiere.

Acepta decimal, hex 0x, binario 0b, octal 0o, hex sin prefijo que contenga a–f, números negativos, y guiones bajos o comas como separadores. Tamaño arbitrario.

Se calcula en tu navegador con JavaScript. Las direcciones nunca se suben ni se almacenan.

¿Qué es un conversor de hex a decimal?

Un conversor de hex a decimal lee una cadena en base 16 como 0xde0b6b3a7640000 y devuelve el mismo número en base 10 (aquí 1.000.000.000.000.000.000, es decir 1018), y viceversa. En blockchain los números llegan a 256 bits, así que el conversor debe usar enteros de precisión arbitraria y mostrar también la palabra de 32 bytes rellenada con ceros y la lectura con signo (int256) que usa la EVM.

Valores útiles

DecimalHexSignificado
1.000.0000xf42401 USDT / USDC (6 decimales)
1.000.000.0000x3b9aca001 gwei en wei; 1 SOL en lamports
10180xde0b6b3a76400001 ether en wei
264 − 10xffffffffffffffffmáximo de uint64
2128 − 10xffff…ffff (32 f)máximo de uint128
2256 − 10xffff…ffff (64 f)máximo de uint256, la cantidad de approve "ilimitada"

Ejemplo práctico

La lectura de un slot de almacenamiento devuelve 0x00000000000000000000000000000000000000000000000000000000000f4240. Al quitar los ceros iniciales queda 0xf4240 = 15×164 + 4×163 + 2×162 + 4×16 + 0 = 983.040 + 16.384 + 512 + 64 = 1.000.000, que es 1 USDT en unidades de 6 decimales. Una palabra de 64 caracteres f es 2256 − 1 como uint256 pero −1 como int256, que es como un contrato almacena menos uno.

Errores comunes

Flujo de trabajo típico

  1. Copia una palabra del desglose de calldata del decodificador ABI o de un slot de almacenamiento en un explorador de bloques.
  2. Pégala aquí para leerla como cantidad decimal; luego divide por los decimales del token con el conversor de decimales de tokens o el conversor de unidades de Ethereum.
  3. Si el valor se parece a 0xffff…, revisa la fila int256: puede ser un número negativo o una aprobación (allowance) "infinita".

Preguntas frecuentes

¿Por qué no usar un conversor de hex normal?

La mayoría convierte a través de números de 64 bits o de coma flotante y pierde dígitos en silencio por encima de unas 16 cifras decimales. Las palabras de la EVM son de 256 bits, así que un saldo de token como 0xde0b6b3a7640000 (1018) ya los rompe. Esta página usa enteros de precisión arbitraria.

¿Qué es la fila bytes32?

El valor rellenado con ceros por la izquierda hasta 32 bytes (64 caracteres hex), que es como aparece como palabra en calldata, datos de retorno, almacenamiento y datos de eventos.

¿Cómo se trata int256?

Si un valor sin signo tiene el bit más alto activado (mayor que 2255 − 1), la página muestra también el número negativo que representa en complemento a dos; para una entrada negativa muestra la palabra de 32 bytes que almacenaría un contrato.

¿Acepta hex sin 0x?

Sí, cuando la cadena contiene al menos una letra a–f. Una cadena formada solo por dígitos se lee como decimal; añade 0x para forzar hex.

¿Cómo convierto hex a decimal a mano?

Multiplica cada dígito por 16 elevado a su posición contando desde la derecha, empezando en 0, y súmalos: 0x2a = 2×16 + 10 = 42. Las letras a–f representan 10–15. Para valores de 64 dígitos la aritmética es tediosa, y para eso está esta página.

¿Por qué las respuestas RPC de Ethereum usan hex?

La especificación JSON-RPC codifica todas las cantidades como cadenas hex con prefijo 0x y sin ceros iniciales para que los valores de 256 bits sobrevivan a los analizadores JSON que solo admiten números de 64 bits. Números de bloque, saldos, gas y nonces llegan todos así.

¿Qué me dice la longitud en bytes?

Cuántos bytes necesita el número sin relleno. Es útil para comprobar si un valor cabe en un uint8, uint64 o uint128, y si se ha pasado un valor del tamaño de una dirección (20 bytes) donde se esperaba un uint.