Texto a hexadecimal

Leer un volcado de memoria, comprobar qué puso realmente un protocolo en la red, desmontar un reto de CTF: tarde o temprano necesitas los bytes que hay detrás de una cadena. Pega un texto y este conversor te lo devuelve byte a byte en hexadecimal, separado con espacios como un hexdump (48 65 6c 6c 6f) o de un tirón (48656c6c6f). Cambia el modo y va en sentido contrario, convirtiendo el hexadecimal que pegues en texto legible.

Cómo funciona el conversor

  1. 1

    Elige la dirección

    Texto a hexadecimal codifica lo que escribes. Hexadecimal a texto lo devuelve a caracteres.

  2. 2

    Elige el separador

    Al codificar, un solo espacio entre bytes o todos seguidos. Esas son las dos opciones.

  3. 3

    Pega tu entrada

    El texto se lee como UTF-8. El hexadecimal puede llegar con prefijos 0x o \x, comas, espacios o saltos de línea: se eliminan por ti.

  4. 4

    Convierte y copia

    El resultado aparece debajo con un botón de copiar. No se descarga nada.

Por qué hexadecimal y no decimal

Un dígito hexadecimal cubre exactamente 4 bits, así que dos dígitos cubren exactamente un byte, siempre. El decimal te obliga a hacer cuentas para saber si un valor todavía cabe (¿128 entra en el rango?, ¿y 256?), mientras que el hexadecimal lo enseña: 00 es el byte más pequeño, ff es el más grande y todos los de en medio ocupan dos caracteres. Esa alineación es la razón de que el hexadecimal sea la notación de los volcados de memoria, las capturas de paquetes, las firmas de archivo y los códigos de color.

Qué produce exactamente este conversor

  • Siempre en minúsculas. El codificador escribe 6c, nunca 6C. El hexadecimal no distingue mayúsculas de minúsculas, así que no se pierde nada, pero si tu formato de destino exige mayúsculas, pasa el resultado por un conversor de mayúsculas.
  • Siempre dos dígitos por byte. Un tabulador es 09, no 9, para que los límites entre bytes se puedan contar.
  • Espacio o nada. Esos son los dos únicos separadores. Al codificar no hay prefijo 0x ni \x, así que añádelos en tu editor si necesitas cadenas de escape de C o Python.
  • UTF-8 de principio a fin. El texto se mide en bytes, no en caracteres.

Hexadecimal y Unicode

H ocupa un byte en UTF-8, así que se convierte en 48. Todo lo que se sale del ASCII puro ocupa más:

Carácter Hex UTF-8 Bytes
A 41 1
é c3 a9 2
€ e2 82 ac 3
🚀 f0 9f 9a 80 4

Así que Hello se codifica como 48 65 6c 6c 6f, cinco caracteres y cinco bytes, mientras que café se codifica como 63 61 66 c3 a9: cuatro caracteres, pero cinco bytes, porque la é necesita dos. Lo mismo pasa con la ñ (c3 b1) y con cualquier vocal acentuada. Si una cadena corta produce más pares hexadecimales de los que esperabas, esa suele ser la razón.

Qué acepta el decodificador

Pega cualquiera de estos y recuperas Hello:

  • 48 65 6c 6c 6f, al estilo hexdump
  • 48656c6c6f, en crudo y sin separadores
  • 0x48656c6c6f, al estilo de literal entero
  • \x48\x65\x6c\x6c\x6f, escapes de C y de Python
  • 48,65,6C,6C,6F, separado por comas y en cualquier mezcla de mayúsculas y minúsculas

Los prefijos, las comas, los espacios, los tabuladores y los saltos de línea se eliminan antes de decodificar. Lo demás no: un guion en 48-65, una # delante de un código de color o una letra posterior a la f detienen la decodificación, y lo mismo ocurre con un número impar de dígitos, porque medio byte no puede convertirse en un carácter. En esos casos la herramienta no devuelve nada en lugar de aventurar un resultado parcial. Si el área de salida se queda vacía, ahí está el motivo que hay que buscar.

Los colores hexadecimales usan la misma notación, no el mismo contenido

#ff8800 emplea el mismo sistema en base 16, pero esos tres bytes describen los canales de rojo, verde y azul, no caracteres. Quita la # y decodifícalo aquí y obtendrás tres bytes crudos que no son texto legible. Para eso usa mejor un selector de color.

Preguntas frecuentes

Sí. Hexadecimal y base16 son dos nombres del mismo sistema: dieciséis dígitos (del 0 al 9 y de la a a la f), cada uno con 4 bits.

Con esta herramienta no. El codificador escribe siempre en minúsculas. Como el hexadecimal no distingue mayúsculas de minúsculas, 4f y 4F son el mismo byte, así que pasa el resultado por cualquier conversor de mayúsculas si tu formato lo exige. El decodificador acepta las dos formas sin problema.

El decodificador solo acepta los dígitos del 0 al 9 y de la a a la f, en cantidad par, después de haber quitado los prefijos 0x y \x, las comas y los espacios. Un guion, una #, una letra posterior a la f o un dígito de menos dejan la entrada inválida, y la herramienta prefiere un resultado vacío a uno equivocado. Cuenta los dígitos y busca signos de puntuación sueltos.

La mayoría de los emoji están en los planos suplementarios de Unicode, que UTF-8 almacena en cuatro bytes. Los caracteres ASCII puros se quedan en un byte cada uno, y por eso el inglés sale a un par por carácter y el español, con sus tildes y su ñ, no.

No. Esto es un campo de texto, así que admite lo que puedas escribir o pegar. Para cargas binarias, base64 es más compacto y más fácil de transportar.

Sí. La conversión se ejecuta en nuestro servidor, de modo que lo que pegas viaja con la petición y el resultado vuelve. Solo registramos la acción y las opciones que has elegido, nunca el texto, y el texto no se guarda después de la respuesta. Para material realmente confidencial, usa un conversor que funcione sin conexión en tu propio equipo.

Herramientas relacionadas

Herramienta disponible en otros idiomas