Convertidor Hexadecimal

Conversión bidireccional entre hexadecimal, texto sin formato, secuencias binarias y valores decimales. Soporte para cadenas Unicode UTF-8 multibyte, enteros de precisión arbitraria, inversión de orden de bytes (endianness) e inspección de volcados canónicos de memoria.

Preajustes:
Tipo de entrada:
Bytes: 14Nibbles: 28Bits: 112Caracteres UTF-8: 13
Formato de mayúsculas:
Prefijo:
Separador:
Hexadecimal (Base 16)0x
C2 A1 48 6F 6C 61 2C 20 6D 75 6E 64 6F 21
Texto (UTF-8)Cadena
¡Hola, mundo!
Binario (Base 2)0b
11000010 10100001 01001000 01101111 01101100 01100001 00101100 00100000 01101101 01110101 01101110 01100100 01101111 00100001
Decimal (Base 10)Bytes
194 161 72 111 108 97 44 32 109 117 110 100 111 33
ASCII (Vista de caracteres)0x00–0x7F
..Hola, mundo!
Base64 y OctalMultiformato
Base64
wqFIb2xhLCBtdW5kbyE=
Octal (Base 8)
302 241 110 157 154 141 054 040 155 165 156 144 157 041

Referencia Rápida de Controles

Modo de ConversiónAlterne entre flujos de bytes continuos, valores numéricos de base única o vistas de desplazamiento canónicas de memoria.
Notación de PrefijoSeleccione prefijos de salida como 0x estilo C, secuencia de escape \x, color CSS # o hex sin prefijo.
Delimitadores de ByteFormatee secuencias de bytes con espacios, dos puntos, comas o cadenas continuas sin separación.
Orden de Bytes (Endianness)Alterne la secuencia de bytes entre Big-Endian (orden de red) y Little-Endian (nativo de procesadores modernos).

Arquitectura de Bytes y Nibbles en Memoria (¿Por Qué Hexadecimal?)

En la arquitectura computacional moderna, la unidad fundamental de almacenamiento direccionable es el byte de 8 bits. Examinar bytes directamente en binario (10100101_2) resulta visualmente denso y propenso a errores humanos, mientras que la base decimal (165_10) divide los límites de los bytes de forma irregular (el valor 256 salta a tres dígitos de manera impredecible).

El sistema hexadecimal resuelve esto porque 16 es una potencia exacta de dos (2^4 = 16). Cada byte de 8 bits se divide limpiamente en dos mitades de 4 bits conocidas como nibbles o cuartetos:

CampoNibble Alto (Bits [7:4])Nibble Bajo (Bits [3:0])Byte Completo de 8 Bits
Patrón de Bits1010010110100101
Extracción a Nivel de Bits(byte >> 4) & 0x0Fbyte & 0x0F(alto << 4) | bajo
Representación HexA50xA5 (165)

Dado que cada byte se asigna indefectiblemente a exactamente dos caracteres hexadecimales (0x00 a 0xFF), las cadenas hexadecimales mantienen una relación estricta de 2:1 entre caracteres y bytes. Al analizar búferes de memoria o tramas de red, cualquier entrada hexadecimal con una cantidad impar de dígitos (como "A" o "1F4") indica la ausencia de un nibble cero inicial y debe completarse a la izquierda ("0A", "01F4") para alinearse con los límites de bytes completos.

Codificación de Caracteres: US-ASCII Frente a Secuencias Multibyte UTF-8

Cuando un texto se transforma a hexadecimal, la secuencia de bytes resultante depende de la codificación de caracteres subyacente. Bajo el estándar US-ASCII (ANSI X3.4), cada carácter ocupa un único byte de 7 bits en el rango de 0x00 a 0x7F.

Las aplicaciones modernas se estandarizan en UTF-8 (RFC 3629), una codificación de longitud variable compatible con ASCII que asigna entre 1 y 4 bytes por punto de código Unicode:

Categoría de CarácterGlifo de EjemploPunto de Código UnicodeSecuencia de Bytes UTF-8 (Hex)Longitud en Bytes
Latino Básico (ASCII)AU+0041411 byte
Latino Extendido / TildeséU+00E9C3 A92 bytes
Ideogramas CJK Unificados字U+5B57E5 AD 973 bytes
Emojis y Símbolos (SMP)💻U+1F4BBF0 9F 92 BB4 bytes

Las secuencias multibyte emplean prefijos de bits estructurales: los caracteres de 2 bytes comienzan con 110xxxxx (0xC0–0xDF), los de 3 bytes con 1110xxxx (0xE0–0xEF), y los de 4 bytes con 11110xxx (0xF0–0xF7). Todos los bytes de continuación posteriores siguen estrictamente el patrón 10xxxxxx (0x80–0xBF).

Referencia Rápida ASCII a Hexadecimal y BinarioASCII estándar de 7 bits (0x00–0x7F)

Espacio (SP)0x20
Dec: 3200100000
!0x21
Dec: 3300100001
"0x22
Dec: 3400100010
#0x23
Dec: 3500100011
$0x24
Dec: 3600100100
%0x25
Dec: 3700100101
&0x26
Dec: 3800100110
00x30
Dec: 4800110000
10x31
Dec: 4900110001
90x39
Dec: 5700111001
@0x40
Dec: 6401000000
A0x41
Dec: 6501000001
B0x42
Dec: 6601000010
C0x43
Dec: 6701000011
M0x4D
Dec: 7701001101
Z0x5A
Dec: 9001011010
a0x61
Dec: 9701100001
b0x62
Dec: 9801100010
m0x6D
Dec: 10901101101
z0x7A
Dec: 12201111010
{0x7B
Dec: 12301111101
}0x7D
Dec: 12501111101
~0x7E
Dec: 12601111110
DEL0x7F
Dec: 12701111111

Endianness y Ordenamiento de Direcciones de Memoria

Al almacenar enteros multibyte en la memoria física de un computador, la secuencia en la que se ordenan los bytes individuales está determinada por la arquitectura de endianness. Por ejemplo, consideremos el entero de 32 bits 0x12345678, donde 0x12 representa el Byte Más Significativo (MSB) y 0x78 representa el Byte Menos Significativo (LSB):

Desplazamiento de MemoriaDirección Base + 0Dirección Base + 1Dirección Base + 2Dirección Base + 3Ámbitos Principales de Aplicación
Big-Endian (MSB Primero)12345678Cabeceras de red IP (TCP/IP), bytecode de la JVM, arquitecturas Motorola
Little-Endian (LSB Primero)78563412x86, x86-64, procesadores ARM (en modo estándar por defecto), RISC-V

Comprender el orden endianness es fundamental al analizar flujos binarios transmitidos a través de redes: la comunicación mediante sockets utiliza el formato Network Byte Order (Big-Endian), lo que exige realizar conversiones con funciones como ntohl() o htonl() en sistemas host basados en Little-Endian.

Notaciones Hexadecimales, Prefijos y Estándares de Formato

Los lenguajes de programación, protocolos de comunicación y formatos de marcado emplean prefijos y delimitadores normalizados para diferenciar los valores hexadecimales de los números decimales:

Formato de NotaciónPatrón de SintaxisEjemploEntornos y Estándares de Uso
Literal Estilo C0x[0-9A-Fa-f]+0x7F, 0xDEADBEEFC, C++, Java, JavaScript, Python, Rust, Go, Swift
Escape de Byte en Cadena\x[0-9A-Fa-f]{2}\x1B\x5B\x32\x4AExpresiones regulares, literales de bytes en C, secuencias de escape en shells
Código de Color CSS#[0-9A-Fa-f]{3,6,8}#3B82F6, #10B98180CSS Color Module Level 3/4, SVG, paletas de software de diseño
Entidad HTML / XML&#x[0-9A-Fa-f]+;&#x2603; (☃)Referencias numéricas de caracteres en HTML5, entidades XML
Sufijo en Ensamblador[0-9][0-9A-Fa-f]*h0FFh, 1000hSintaxis de ensamblador Intel x86 (NASM, MASM)

Tabla de Máscaras de Bits y Manipulación de Bytes (Bitmasking)

Los ingenieros de sistemas y desarrolladores de protocolos emplean literales hexadecimales para definir máscaras a nivel de bits, debido a que las potencias de dos se alinean perfectamente con los límites de 4 bits de cada dígito hex:

OperaciónMáscara / Expresión HexObjetivo a Nivel de BitsUso Real en Ingeniería de Software
Aislamiento de Byteval & 0xFFBits [7:0]Truncar entero de 32/64 bits a un byte de 8 bits sin signo; aislar el LSB
Aislamiento de Palabra de 16 Bitsval & 0xFFFFBits [15:0]Extracción de número de puerto TCP/UDP, enmascaramiento de unidades UTF-16
Extracción de Nibble Alto(byte >> 4) & 0x0FBits [7:4]Desempaquetar versión en cabecera IPv4 (el primer nibble del byte 0 es 0x4)
Extracción de Nibble Bajobyte & 0x0FBits [3:0]Extraer longitud de cabecera (IHL) en palabras de 32 bits del byte 0 en IPv4
Extracción de Canal de Color(rgba >> 16) & 0xFFBits [23:16]Extraer canal Verde de un entero RGBA de 32 bits (0xRRGGBBAA)
Alineación de Línea de Caché(addr & 0x3F) == 0Bits [5:0] == 0Verificar si un puntero de memoria está alineado a una línea de caché de 64 bytes

Arquitectura del Volcado Canónico Hex Dump (hexdump -C / xxd)

Los analistas de seguridad e ingenieros de firmware emplean volcados canónicos de memoria para examinar estructuras binarias sin necesidad de ejecutar ni decodificar el archivo a ciegas. El formato canónico estructura cada fila de 16 bytes en tres columnas coordinadas:

00000000 48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21 0d 0a 00 |Hello, World!...|
00000010 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
↑           ↑                        ↑                        ↑
Offset    Primeros 8 Bytes Hex       Segundos 8 Bytes Hex      Columna ASCII
1. Columna de DesplazamientoDirección de memoria hexadecimal de 8 dígitos que indica el índice de byte relativo al inicio del archivo (0x00000000).
2. Dos Bloques de 8 Bytes16 bytes divididos en dos mitades de 8 bytes separadas por un espacio doble para facilitar el escaneo visual rápido.
3. Barra Lateral ASCII ImprimibleLos caracteres imprimibles (0x20–0x7E) se renderizan directamente; los no imprimibles se sustituyen por puntos (.).

Firmas de Archivos Binarios (Magic Bytes) de Referencia

Los sistemas operativos, motores antivirus e inspectores de archivos identifican el tipo de formato mediante secuencias fijas de bytes situadas en desplazamientos específicos (habitualmente en el offset 0x00), en lugar de confiar en extensiones de archivo fácilmente manipulables:

Formato de ArchivoBytes Mágicos Iniciales (Hexadecimal)Equivalente ASCIIEspecificación del Formato
Imagen PNG89 50 4E 47 0D 0A 1A 0A. P N G \r \n \x1A \nPortable Network Graphics (RFC 2083)
Imagen JPEG / JFIFFF D8 FF\xFF \xD8 \xFFMarcador de Inicio de Imagen (SOI) (ISO 10918)
Imagen GIF47 49 46 38 39 61G I F 8 9 aGraphics Interchange Format 89a
Documento PDF25 50 44 46% P D FAdobe Portable Document Format (ISO 32000)
Archivo ZIP / DOCX / JAR50 4B 03 04P K \x03 \x04Cabecera de Archivo Local PKZIP
Ejecutable ELF7F 45 4C 46\x7F E L FFormato Ejecutable y Enlazable de Linux
Ejecutable Windows PE4D 5AM ZCabecera DOS MZ / Portable Executable (EXE, DLL)

Referencia Programática de Conversión Hexadecimal en Diversos Lenguajes

Las implementaciones estándar a continuación ilustran cómo codificar y decodificar datos en hexadecimal en los principales entornos de producción:

TypeScript & Node.js (Buffer / Uint8Array)
// Cadena de texto a hexadecimal
const hexString = Buffer.from('Hola, Mundo', 'utf-8').toString('hex');
// Resultado: "486f6c612c204d756e646f"

// Hexadecimal de vuelta a texto UTF-8
const utf8Text = Buffer.from(hexString, 'hex').toString('utf-8');

// Entero numérico a Hexadecimal con soporte para BigInt
const hexNum = (3735928559n).toString(16).toUpperCase(); // "DEADBEEF"
const parsedInt = BigInt('0x' + hexNum); // 3735928559n
Python 3 (Módulos integrados bytes y binascii)
# Cadena de texto a bytes hexadecimales
raw_bytes = "Hola, Mundo".encode("utf-8")
hex_repr = raw_bytes.hex()  # '486f6c612c204d756e646f'

# Hexadecimal a cadena decodificada
decoded = bytes.fromhex(hex_repr).decode("utf-8")

# Entero a Hexadecimal e inverso
num_hex = hex(3735928559)  # '0xdeadbeef'
original_num = int("0xdeadbeef", 16)  # 3735928559
Go (paquete encoding/hex)
package main

import (
    "encoding/hex"
    "fmt"
)

func main() {
    data := []byte("Hola, Mundo")

    // Codificar slice de bytes a cadena hex
    hexEncoded := hex.EncodeToString(data)
    fmt.Println("Hex:", hexEncoded)

    // Decodificar cadena hex de vuelta a slice de bytes
    decodedBytes, err := hex.DecodeString(hexEncoded)
    if err == nil {
        fmt.Println("Decodificado:", string(decodedBytes))
    }
}
CLI de Unix / Linux (hexdump y xxd)
# Mostrar volcado canónico de un archivo binario
hexdump -C archivo.tar.gz | head -n 5

# Generar volcado reversible con xxd
xxd binario.bin salida.hex

# Reconstruir archivo binario a partir del volcado hex
xxd -r salida.hex reconstruido.bin

Frequently Asked Questions

¿Por qué las representaciones hexadecimales siempre muestran los bytes en parejas de dos caracteres?

En la arquitectura de computadoras moderna, la unidad fundamental de memoria direccionable es el byte de 8 bits. Un dígito hexadecimal representa exactamente 4 bits (un nibble o cuarteto), abarcando valores de 0 (0000) a 15 (1111 o 0xF). En consecuencia, dos dígitos hexadecimales representan con precisión 2 × 4 = 8 bits, cubriendo el rango 0x00 (0) hasta 0xFF (255). Un único dígito hexadecimal desparejado representaría solo medio byte, por lo que los flujos de bytes se representan canónicamente en pares uniformes.

¿Cómo gestiona el sistema hexadecimal los números negativos con signo en la memoria física?

El hardware de los ordenadores representa los enteros con signo mediante la notación binaria de complemento a dos (Two's Complement), en lugar de almacenar signos físicos en memoria. Por ejemplo, en un entero con signo de 8 bits, 0xFF representa -1, 0x80 representa -128 y 0x7F representa +127. Al convertir valores hexadecimales a decimales, debe especificarse el tamaño de palabra de destino (como 8, 16, 32 o 64 bits) para determinar si el bit más significativo actúa como bit de signo o como magnitud sin signo convencional.

¿Cuál es la diferencia entre una cadena codificada en hexadecimal y los datos binarios sin procesar?

Un byte binario sin procesar ocupa exactamente 8 bits (1 byte) en disco y memoria física. Al transformarse en una cadena hexadecimal imprimible (como "FF"), cada dígito se almacena como un carácter ASCII independiente que consume 1 byte cada uno ("F" es 0x46), lo que requiere 2 bytes de almacenamiento. La codificación hexadecimal proporciona una representación legible por humanos para depuración, serialización y protocolos de red basados en texto, a expensas de duplicar el tamaño físico (expansión del 100%).

¿Cómo se asignan los caracteres multibyte UTF-8 a los bytes hexadecimales?

Los caracteres estándar US-ASCII (puntos de código U+0000 a U+007F) se asignan directamente a bytes individuales de 0x00 a 0x7F. Los caracteres Unicode que exceden el rango ASCII requieren entre 2 y 4 bytes en UTF-8. El byte inicial indica la longitud total de la secuencia (0xC0–0xDF para 2 bytes, 0xE0–0xEF para 3 bytes, 0xF0–0xF7 para 4 bytes), seguido de bytes de continuación en el intervalo 0x80–0xBF. Por ejemplo, el símbolo del euro "€" (U+20AC) se codifica en los tres bytes hexadecimales E2 82 AC, y el emoji "💻" (U+1F4BB) se codifica en cuatro bytes: F0 9F 92 BB.

¿Cuándo debe aplicarse el orden de bytes Big-Endian frente a Little-Endian?

Big-Endian almacena el byte más significativo (MSB) en la dirección de memoria más baja, lo que coincide con el orden de lectura numérico natural de izquierda a derecha y con los protocolos de red estándar TCP/IP (Network Byte Order). Little-Endian almacena el byte menos significativo (LSB) en primer lugar en la dirección más baja, siendo la arquitectura nativa de los procesadores x86, x64 y la mayoría de los núcleos ARM. Al analizar volcados de memoria física o cargas binarias de red, seleccionar el orden correspondiente previene cálculos numéricos invertidos.

¿Por qué los códigos hexadecimales de color en CSS utilizan 3, 6 u 8 caracteres?

Los códigos de color hexadecimales en CSS se asignan directamente a los canales del espacio de color sRGB. Un código de 6 dígitos (#RRGGBB) asigna dos dígitos hexadecimales (00–FF, correspondientes a 0–255) a los canales Rojo, Verde y Azul. Un código de 8 dígitos (#RRGGBBAA) añade un canal Alfa de dos dígitos para la opacidad. Las variantes abreviadas de 3 dígitos (#RGB) y 4 dígitos (#RGBA) expanden cada carácter duplicándolo (#F5A equivale a #FF55AA), proporcionando una notación compacta cuando los nibbles superior e inferior de cada canal coinciden.

¿En qué se diferencia un volcado canónico Hex Dump de una cadena hexadecimal continua?

Las cadenas hexadecimales continuas concatenan valores de bytes sin referencia espacial. Un volcado canónico Hex Dump (como la salida estándar de hexdump -C o xxd) organiza los datos en tres columnas coordinadas: una dirección de desplazamiento de 8 dígitos a la izquierda, 16 bytes hexadecimales divididos en dos bloques de 8 bytes en el centro, y una vista previa ASCII a la derecha donde los caracteres de control no imprimibles se sustituyen por puntos (.). Esto permite a los ingenieros correlacionar posiciones exactas de memoria con texto legible.

¿Qué ocurre cuando una cadena hexadecimal de entrada tiene una longitud impar o contiene caracteres no válidos?

En el análisis estricto de flujos de bytes, una cadena hexadecimal de longitud impar no puede asignarse limpiamente a octetos completos de 8 bits porque el último nibble carece de pareja. Los analizadores robustos manejan esto anteponiendo un cero inicial a la izquierda (por ejemplo, "A" se interpreta como "0A") o emitiendo una advertencia de formato. Los caracteres ajenos al alfabeto hexadecimal [0–9a-fA-F] se filtran o se tratan como delimitadores (como espacios, dos puntos o comas) según las opciones de configuración.