Decodificar hexadecimal

Pega hexadecimal con la forma en que lo hayas copiado y lee el texto que hay detrás. Los separadores se ignoran, así que un volcado de un registro funciona igual que una lista separada por comas de un código fuente. Lo que no forme una secuencia UTF-8 válida se dice como tal en vez de convertirse en interrogantes — esa diferencia decide entre obtener una respuesta y obtener una equivocada.

Resultado

La respuesta aparece aquí mientras escribes.

  • Dónde se ejecuta

    No se sube nada, porque no hay archivo: se calcula en esta misma página.

  • Sin cola y sin cuenta

    Responde tan rápido como dé tu máquina, y nunca pregunta quién eres.

  • Tantas veces como quieras

    No se cuenta nada ni se limita nada: volver a responder no nos cuesta nada.

Cómo funciona

  1. Pega el hexadecimal, con separadores o sin ellos.
  2. Lee el texto. Si los bytes no son texto, eso es lo que verás en vez de una salida adivinada.
  3. No se ha subido nada.

Los separadores dan igual; la cantidad de dígitos, no

Los espacios, los dos puntos, las comas, los saltos de línea y los prefijos `0x` se quitan antes de leer. Lo que pegues puede venir de una captura de red, de una salida de OpenSSL o de la definición de un array en C, sin que tengas que limpiarlo antes.

Lo que no da igual es el número de dígitos que quedan: tiene que ser par, porque un byte son dos. Una longitud impar no es un caso límite que convenga rellenar con un cero en silencio — significa que al copiar se perdió algo, y por eso se avisa.

Cuando los bytes no son texto

Una secuencia de bytes puede ser un PNG, un PDF o un ZIP igual de bien que una frase. Un PNG empieza por `89 50 4e 47`, un PDF por `25 50 44 46`, un ZIP por `50 4b`. Leer esos datos como UTF-8 produce símbolos de sustitución o una secuencia técnicamente válida que no significa nada.

En vez de devolver algo con aspecto de resultado, aquí se dice que los bytes no son texto y cuántos son. Es la respuesta útil: cierra la búsqueda de un error de codificación que no existe y traslada la atención a lo que corresponde, que es qué clase de datos son en realidad.

Cómo se reconoce UTF-8 en un volcado

UTF-8 tiene una estructura que se lee con algo de práctica. Los bytes por debajo de `80` son ASCII, un carácter cada uno. Un byte entre `c2` y `df` abre una secuencia de dos, entre `e0` y `ef` una de tres, entre `f0` y `f4` una de cuatro, y todos los bytes de continuación están entre `80` y `bf`.

De ahí sale una regla práctica útil: un `c3` en medio del volcado es casi con seguridad un carácter acentuado del castellano, porque `c3 b1` es ñ, `c3 a1` es á y `c3 ba` es ú. Quien vea un `c3` en un registro donde debería haber una eñe sabe con eso que los bytes están bien y que el problema es de la visualización.

La marca de orden de bytes al principio

Si la secuencia empieza por `ef bb bf`, ahí hay una BOM de UTF-8. Es invisible, forma parte del contenido, y es la razón de que la primera columna de un CSV exportado de Excel tenga a veces un nombre que ningún programa de lectura reconoce.

La misma marca puede ser `fe ff` o `ff fe` con otra codificación — entonces se trata de UTF-16 y no de UTF-8, y los bytes no son legibles aquí como texto. Un `ff fe` al principio seguido de ceros entre las letras es la firma típica de un archivo del Bloc de notas de Windows en versiones antiguas.

Ceros entre las letras

Si en el volcado aparece un `00` entre cada byte legible, la codificación es UTF-16 y no UTF-8. Un `48 00 61 00` es «Ha» en UTF-16 con el byte menos significativo primero — las mismas letras, otra codificación, y leído como UTF-8 da texto con caracteres de control intercalados.

Aparece en exportaciones del registro de Windows, en algunos campos de SQL Server y en todo lo que haya pasado por la variante Unicode de la API de Windows. Reconocerlo es sencillo en cuanto se ven los bytes — y esa es la utilidad real de esta página frente a una herramienta que solo escupe una respuesta.

Por qué no se prueba con Latin-1

Cualquier secuencia de bytes se puede leer como Latin-1, porque allí cada uno de los 256 bytes es un carácter. Un decodificador que ante un UTF-8 inválido recurra a eso en silencio devuelve siempre algo — y ese algo es basura con datos binarios, y el célebre engendro de letras raras con un UTF-8 mal leído.

Esos rodeos convierten un error reconocible en un resultado plausible, que es la peor de las dos propiedades. Aquí no hay segunda codificación silenciosa: o es UTF-8 válido, o te enteras de que no lo es y decides tú qué significa eso.

La huella que no acaba de cuadrar

Un motivo frecuente es comparar dos huellas de certificado o dos sumas de verificación, una anotada con dos puntos y en mayúsculas y la otra sin ellos y en minúsculas. Los bytes son idénticos, las cadenas no, y una comparación de texto señala en consecuencia una diferencia.

Quien pase las dos por este campo ve al momento si son los mismos bytes. Si lo son, era un problema de formato; si no, difieren de verdad, y entonces la siguiente pregunta es de seguridad y no de estética.

Lo que aquí no se ofrece a propósito

No hay salida como archivo. Si los bytes son un PNG, esta página tendría información suficiente para ofrecerlo como descarga — y no lo hace, porque es otra tarea y una en la que conviene saber lo que se está haciendo. Construir un ejecutable a partir de un volcado de origen ajeno no es un gesto que una herramienta de texto deba ofrecer de pasada.

Tampoco hay detección automática de la codificación. Sería poco fiable con entradas cortas y se equivocaría justo cuando importa. Lo que la página hace en su lugar es decirte que no es UTF-8 — y la decisión sobre qué es entonces la tienes tú mejor controlada que una heurística.

Qué significa esto para el RGPD

Un volcado hexadecimal de un registro o de una captura de red contiene con frecuencia lo que se estaba transmitiendo: credenciales, claves de sesión, datos útiles con nombres dentro. Como aquí se decodifica en la página, no hay comunicación a nosotros ni encargo de tratamiento sobre ese contenido.

Con esta clase de valor es el punto decisivo. Una captura es por definición algo que uno no quiere volver a sacar fuera, y una herramienta que la decodifique en un servidor ajeno ya la ha visto. El panel de red muestra que de aquí no sale nada.

Decodificar hexadecimal: preguntas frecuentes

¿Tengo que quitar antes los espacios y los dos puntos?

No. Espacios, dos puntos, comas, saltos de línea y prefijos 0x se ignoran. Un volcado de una captura de red funciona igual que una lista separada por comas copiada de código fuente.

¿Por qué no me devuelve texto?

Porque los bytes no forman una secuencia UTF-8 válida. Con datos binarios es lo normal: un PNG, un PDF o un ZIP no son texto. Se dice expresamente en vez de devolver algo con aspecto de resultado.

Entre mis letras hay 00 por todas partes, ¿qué significa?

Que la codificación es UTF-16 y no UTF-8. Es típico de exportaciones del registro de Windows, de algunos campos de SQL Server y de todo lo que haya pasado por la variante Unicode de la API de Windows.

¿Por qué se rechaza un número impar de dígitos?

Porque un byte son dos dígitos hexadecimales, así que una longitud impar significa que falta algo. La alternativa sería añadir un cero en silencio, y eso convertiría un error al copiar en un resultado falso plausible.

¿Salen los datos de mi equipo?

No. Se decodifica en esta página. Con volcados cuenta especialmente, porque contienen con frecuencia justo lo que se estaba transmitiendo: credenciales, claves de sesión, datos útiles.

Otras herramientas