tools / hex
hex/
Convierte texto a hexadecimal y al revés. Elige UTF-8, GBK, UTF-16 y más; la salida puede llevar separador, mayúsculas y prefijo 0x o \x.
Texto
hex
Preguntas frecuentes
¿Cuántos bytes ocupa un carácter chino en hexadecimal y por qué otras herramientas dan un resultado distinto?
Depende del juego de caracteres. En UTF-8, un carácter chino común ocupa 3 bytes; por ejemplo, 中 es e4 b8 ad. En GBK y GB2312 ocupa 2 bytes y 中 es d6 d0. Un emoji ocupa 4 bytes en UTF-8. Las letras A-Z sin tilde y los dígitos ocupan 1 byte tanto en UTF-8 como en GBK, así que el resultado es el mismo. Si el resultado no coincide con el de otra herramienta, comprueba qué juego de caracteres usa; esta página usa UTF-8 por defecto.
Al pasar de hexadecimal a texto sale que los bytes no son texto válido, o el resultado es ilegible. ¿Qué hago?
Significa que los bytes no se codificaron con el juego de caracteres seleccionado, así que prueba con otro. Para texto en chino, los más habituales son UTF-8 y GBK (el software antiguo y las exportaciones de bases de datos suelen usar GBK); el hexadecimal de UTF-16 suele tener muchos bytes 00. Esta herramienta nunca muestra como basura los bytes que no puede decodificar. La única excepción es ISO-8859-1: cada byte corresponde a algún carácter, así que nunca da error, pero el texto chino se convierte en caracteres ilegibles. GBK y GB2312 se decodifican con el decodificador GB18030 del propio navegador, que es más permisivo que el de Python o Java, por lo que con GB2312 también se decodifican caracteres que solo existen en GBK. Si los bytes nunca fueron texto (una imagen, datos cifrados, un hash), ningún juego de caracteres los decodificará.
¿Qué formatos reconoce la conversión de hexadecimal a texto?
Se admiten mayúsculas y minúsculas. Los bytes pueden ir separados por espacios, saltos de línea, tabuladores, dos puntos, comas o guiones, o sin separar, y cada byte puede empezar por 0x o \x, así que 0x48,0x65 y \x48\x65 se decodifican tal cual. Cada grupo entre dos separadores debe tener un número par de dígitos, por lo que hay que escribir 0x01 y no 0x1. Cualquier carácter distinto de 0-9 y a-f también da error. En ambos casos el mensaje indica la posición del carácter. Formas como U+4E2D y %E4%B8%AD no se reconocen; para la codificación URL usa la herramienta URL de este sitio.
¿Cómo obtengo formatos como 0x48,0x65 o \x48\x65?
Elige «,» como separador y «0x» como prefijo para obtener 0x48,0x65, que puedes pegar en un array de bytes de C o Java. Elige «Ninguno» como separador y «\x» como prefijo para obtener \x48\x65, la notación de bytes que se usa en cadenas de Python y C. El prefijo se añade delante de cada byte, así que «Ninguno» más 0x da 0x480x65, algo que rara vez sirve. «Mayúsculas» solo afecta a a-f; la x de 0x se queda en minúscula.
¿Por qué el resultado en UTF-16 empieza por feff y no coincide con otras herramientas?
UTF-16 sigue el criterio de Java: empieza por FE FF (marca de orden de bytes) y va en big-endian, así que 中 es fe ff 4e 2d. UTF-16BE sin la marca es 4e 2d; copia el resultado y borra los dos primeros bytes. UTF-32 es big-endian y sin marca, así que 中 es 00 00 4e 2d. Al decodificar, UTF-16 acepta un FE FF inicial (big-endian) o un FF FE (little-endian) y asume big-endian si no hay marca.
¿Por qué el texto en chino da error con ASCII o ISO-8859-1?
ASCII solo cubre de 0 a 127, e ISO-8859-1 llega hasta U+00FF (letras de Europa occidental con tilde, sin caracteres chinos). Cualquier carácter fuera de ese rango da un error como “El carácter «中» no se puede codificar en ASCII”, en lugar de sustituirse en silencio por ? como hace getBytes de Java. GBK y GB2312 se comportan igual: los emojis y los caracteres raros que no están en la tabla de códigos dan error. Cambia a UTF-8 o GB18030 para convertirlos.
¿Se convierten los espacios y los saltos de línea de lo que escribo?
En texto a hex, sí. Se convierte cada carácter del cuadro de entrada, incluidos los espacios y saltos de línea del principio y del final: un espacio es 20 y un salto de línea es 0a. El cuadro de texto del navegador normaliza los saltos de línea a \n, así que en un texto de varias líneas el salto de línea es 0a y no 0d 0a; si necesitas saltos de línea de Windows, edítalo tú en el resultado. En hex a texto, los espacios en blanco del hexadecimal se ignoran y solo cuentan los bytes, y un 0d 0a del resultado también se muestra como un único salto de línea.
¿Se sube lo que escribo?
No. La conversión se hace en tu navegador, no realiza ninguna solicitud de red y no guarda nada.