Saltar al contenido
nearnull

Conversor de Hexadecimal

Convertí texto a hexadecimal y hex de vuelta a texto, con soporte UTF-8. Funciona enteramente en tu navegador: no se envía nada a ningún servidor.

Resultado
Acá aparece el resultado convertido

¿Qué es la codificación hexadecimal?

La codificación hexadecimal escribe cada byte como dos caracteres del 0 al 9 y de la a a la f, así cualquier dato se puede representar en texto plano imprimible. Esta herramienta convierte en los dos sentidos: pasa texto al hex de sus bytes UTF-8, y vuelve de hex a texto legible. Como trabaja sobre bytes y no sobre caracteres, una sola letra acentuada o un emoji ocupan varios pares hex: 'é' es c3 a9 y '🦩' es f0 9f a6 a9. Todo corre localmente en tu navegador: nada de lo que pegues se transmite.

Ejemplos

La misma conversión en los lenguajes que probablemente uses:

JavaScript
const hex = [...new TextEncoder().encode(str)]
  .map((b) => b.toString(16).padStart(2, "0"))
  .join("");
Python
str.encode("utf-8").hex()
bytes.fromhex(hex).decode("utf-8")
Java
HexFormat.of().formatHex(str.getBytes(StandardCharsets.UTF_8))
Go
import "encoding/hex"

hex.EncodeToString([]byte(s))
PHP
bin2hex($str);
hex2bin($hex);
Shell
printf "%s" "$str" | xxd -p
echo "$hex" | xxd -r -p

Casos de uso

Leer un volcado hexadecimal

Pegá bytes copiados de xxd, hexdump, Wireshark o un debugger y recuperá el string legible, sin tener que armar un script solo para decodificar una línea.

Ver qué contiene realmente un string

Los caracteres invisibles son el sospechoso de siempre cuando dos strings se ven iguales pero no comparan igual. Codificar a hex los expone: un espacio de no separación (c2 a0), un espacio de ancho cero (e2 80 8b) o un retorno de carro colgado (0d) se vuelven visibles.

Armar datos de prueba

Generá la secuencia exacta de bytes que espera un parser, un protocolo o un test de formato binario, con el estilo de separador que corresponda al lenguaje en el que escribís el fixture.

Verificar una suposición de codificación

Si un texto llega roto desde una base de datos o una API, el hex te dice si estás viendo UTF-8 leído como Latin-1, UTF-8 doblemente codificado, o bytes genuinamente corruptos.

Preguntas frecuentes

¿Qué codificación de texto usa esta herramienta?
UTF-8, en los dos sentidos. El texto se codifica a sus bytes UTF-8, y el hex se decodifica como UTF-8. UTF-8 es el default de la web, de JSON y de prácticamente cualquier API moderna, así que es lo que querés salvo que sepas que estás trabajando con una codificación heredada.
¿Por qué me da error un hex que parece perfectamente válido?
Son dos errores distintos. 'No es hex válido' significa que la entrada tiene caracteres fuera de 0-9 y a-f, o una cantidad impar de dígitos (cada byte necesita exactamente dos). 'No es UTF-8 válido' significa que el hex se parseó bien pero los bytes resultantes no forman texto: eso pasa con datos genuinamente binarios, como un archivo comprimido o el encabezado de una imagen, o con texto en otra codificación como Latin-1.
¿Qué formatos de hex acepta como entrada?
Todos los que la herramienta puede generar, y algunos más. Los espacios, comas, saltos de línea y prefijos 0x se sacan antes de parsear, así que 48656c6c6f, 48 65 6c 6c 6f, 0x48, 0x65 y hex pegado en varias líneas decodifican todos a lo mismo.
¿Por qué a veces un caracter son varios pares hex?
Porque el hex representa bytes, no caracteres. En UTF-8, los caracteres ASCII ocupan un byte, la mayoría de las letras latinas acentuadas y griegas ocupan dos, la mayoría de los caracteres CJK ocupan tres, y los emoji ocupan cuatro. Así que un string de 5 caracteres no son necesariamente 10 dígitos hex: la cantidad de bytes que se muestra al lado del resultado es el largo real.
¿Hex es lo mismo que Base64?
Los dos convierten bytes en texto imprimible, pero el hex usa 16 símbolos y ocupa dos caracteres por byte, mientras que Base64 usa 64 símbolos y ocupa alrededor de 1,33 caracteres por byte. El hex es más fácil de leer byte por byte, por eso lo usan los volcados y los debuggers; Base64 es más compacto, por eso se usa para meter datos en JSON, URLs y correo.
¿Mi entrada se envía a algún lado?
No. La conversión corre enteramente en tu navegador con JavaScript puro. Nada de lo que escribas o pegues acá se transmite ni se guarda en ningún servidor.