Codificación Hex Explicada
La codificación hexadecimal (hex) representa datos binarios usando notación base-16. Utiliza dieciséis dígitos: 0-9 para valores del cero al nueve, y A-F para valores del diez al quince. Cada dígito hex representa exactamente cuatro bits, lo que hace que hex sea la forma más amigable para humanos de leer y escribir datos binarios. Un byte (8 bits) está perfectamente representado por dos dígitos hex, razón por la cual hex aparece en todas partes en la programación.
La ventaja fundamental de hex sobre binario es la legibilidad. Un número binario de 32 bits como 10110101101110101010111001011101 se convierte en B5BAAE5D en hex — cuatro veces más corto y dramáticamente más fácil de leer, comparar y recordar. Esta compacidad hace que hex sea la notación estándar para direcciones de memoria, valores de color, hashes criptográficos y código máquina.
La Relación Hex-Decimal
| Decimal | Binario | Hex |
|---|---|---|
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 2 | 0010 | 2 |
| 3 | 0011 | 3 |
| 4 | 0100 | 4 |
| 5 | 0101 | 5 |
| 6 | 0110 | 6 |
| 7 | 0111 | 7 |
| 8 | 1000 | 8 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 12 | 1100 | C |
| 13 | 1101 | D |
| 14 | 1110 | E |
| 15 | 1111 | F |
Cada dígito hex se corresponde directamente con una secuencia binaria de cuatro bits. Esta correspondencia directa significa que puedes convertir entre hex y binario mentalmente una vez que memorices la tabla.
Casos de Uso Comunes para Desarrolladores
Códigos de Color
CSS y las herramientas de diseño representan colores usando valores hex de seis dígitos. El formato #RRGGBB usa dos dígitos hex para rojo, verde y azul respectivamente. #FF0000 es rojo puro, #00FF00 es verde puro y #0000FF es azul puro. El valor #FFFFFF es blanco y #000000 es negro.
.primary { color: #2563eb; }
.success { color: #16a34a; }
.danger { color: #dc2626; }
La abreviatura de tres dígitos como #F00 se expande a #FF0000 duplicando cada dígito.
Direcciones de Memoria
Los depuradores, desensambladores y herramientas de bajo nivel muestran direcciones de memoria en hex. Un stack trace que muestra 0x7FFF5FBFF9EC te indica la ubicación exacta de memoria en una forma compacta. Los punteros en C y C++ se imprimen en hex por defecto al usar %p.
Hashes Criptográficos
Las funciones hash producen digestos binarios que convencionalmente se muestran como cadenas hex. SHA256 produce un hash de 256 bits mostrado como 64 caracteres hex. Este formato se usa para sumas de verificación de archivos, IDs de transacciones blockchain y hashes de commits de Git.
Código Máquina y Protocolos Binarios
Cada byte de código máquina o datos de protocolo se lee mejor en hex. Los inspectores de paquetes de red, volcados de firmware y especificaciones de formatos de archivos binarios usan notación hex.
Conversión Entre Hex y Otros Formatos
Hex a Decimal
Multiplica cada dígito hex por 16 elevado a su posición, contando de derecha a izquierda comenzando en 0.
Hex: 2F
F = 15 × 16^0 = 15
2 = 2 × 16^1 = 32
Total: 15 + 32 = 47
Decimal a Hex
Divide por 16 repetidamente y lee los residuos de abajo hacia arriba.
Decimal: 47
47 ÷ 16 = 2 residuo 15 (F)
2 ÷ 16 = 0 residuo 2
Resultado: 2F
Hex a Binario
Reemplaza cada dígito hex con su equivalente binario de cuatro bits.
Hex: 2F
2 → 0010
F → 1111
Binario: 00101111
Soporte en Lenguajes de Programación
Todos los lenguajes principales incluyen conversión hex integrada:
# Python
hex_value = hex(255) # '0xff'
decimal = int('ff', 16) # 255
// JavaScript
let hex = (255).toString(16); // 'ff'
let dec = parseInt('ff', 16); // 255
// PHP
$hex = dechex(255); // 'ff'
$dec = hexdec('ff'); // 255
// Java
String hex = Integer.toHexString(255); // 'ff'
int dec = Integer.parseInt("ff", 16); // 255
Herramienta en Línea
La herramienta Codificador y Decodificador Hex en Help2Code te permite convertir entre texto, hex, decimal y binario al instante. Es útil para depuración, aprendizaje y conversiones rápidas durante el desarrollo.
Hex en URLs
La codificación porcentual en URLs a menudo usa hex. Un espacio se convierte en %20, donde 20 es el valor hex del código ASCII del carácter espacio. Cualquier byte en una URL puede representarse como %XX donde XX es el valor hex. Esta es la razón por la que la codificación URL a veces se llama codificación porcentual.
Hex vs Base64
Tanto hex como Base64 codifican datos binarios como texto, pero sirven para diferentes propósitos. Hex es mejor para legibilidad humana y depuración. Base64 está diseñado para transmisión de datos compacta. Hex expande los datos en un 100% (un byte se convierte en dos caracteres), mientras que Base64 expande solo un 33%. Usa hex para visualización y depuración, Base64 para almacenamiento y transmisión.
Conclusión
La codificación hexadecimal es una habilidad esencial para cualquier desarrollador que trabaje con datos de bajo nivel, colores, memoria o criptografía. Su correspondencia directa con binario la convierte en la representación más legible de datos binarios. Usa el Codificador y Decodificador Hex para conversiones rápidas y practica la conversión mental de hex a decimal para valores comunes.