Cómo convertir Base64 a hex
- Pega el Base64 en Entrada · Base64. Se admiten saltos de línea, espacios, relleno
=ausente y caracteres URL-safe. - Los bytes aparecen en Salida · Hex. La línea de estado muestra Parece con el tipo de archivo detectado, si los bytes coinciden con un formato conocido.
- Bajo la salida, elige Mayúsc./minúsc., Separador y Bytes por línea.
- Usa Copiar salida o Descargar para llevarte el hex. Guardar bytes escribe en un archivo los propios bytes decodificados.
Para el sentido contrario, usa el selector Hex → Base64 o Hex a Base64.
Opciones de salida
El Base64 SGkh/w== contiene cuatro bytes. El ajuste Separador decide cómo se escriben:
| Separador | Salida | Para qué sirve |
|---|---|---|
| Ninguno | 486921ff | comparar con la salida de sha256sum, bases de datos, URL |
| Espacio | 48 69 21 ff | leer byte a byte, editores hex |
: | 48:69:21:ff | huellas de certificados y claves |
0x | 0x48 0x69 0x21 0xff | constantes en C, C# o Java |
\x | \x48\x69\x21\xff | literales de cadena en Python, C y shell |
Mayúsc./minúsc. cambia a 48 69 21 FF. Con Bytes por línea en 16 obtienes el formato de volcado de siempre, 16 bytes por fila, con el que es fácil encontrar el desplazamiento 0x40 o contar la longitud de un encabezado.
Leer los primeros bytes
La mayoría de los formatos de archivo empiezan con una firma fija, y en hex esas firmas se reconocen fácilmente. Algunos prefijos Base64 y lo que decodifican:
| El Base64 empieza por | Hex | Formato |
|---|---|---|
iVBORw0KGgo | 89 50 4e 47 0d 0a 1a 0a | PNG |
/9j/ | ff d8 ff | JPEG |
JVBERi0 | 25 50 44 46 2d (%PDF-) | |
UEsDBA | 50 4b 03 04 (PK) | ZIP, y también DOCX, XLSX, JAR, APK |
H4sI | 1f 8b 08 | gzip |
Cuando los primeros bytes no coinciden con ninguno de estos, aún pueden ser texto en un juego de caracteres inesperado, o datos cifrados, que en hex parecen aleatorios de forma uniforme. La lista de prefijos Base64 habituales tiene muchos más. Si resulta que los datos son un archivo que quieres abrir, Base64 a archivo lo previsualiza y lo guarda.
Comparar digests y sumas de comprobación
Hex es el formato que imprimen las herramientas de checksum, así que pasar Base64 a hex es la forma de comparar un valor de un encabezado o un archivo de configuración con tu propio md5sum o sha256sum:
| Dónde lo ves | Base64 | Hex |
|---|---|---|
Encabezado Content-MD5 de hello | XUFAKrxLKna5cZ2REBfFkg== | 5d41402abc4b2a76b9719d911017c592 |
SHA-256 de hello | LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ= | 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 |
Lo mismo vale para los atributos integrity="sha384-…", las huellas SSH en formato SHA256: (Base64 sin relleno) y las claves binarias dentro de JSON. Si dos valores difieren en hex, difieren en bytes; si coinciden, cualquier diferencia en el Base64 era solo de formato, como el relleno o el alfabeto URL-safe.
Base64 a hex en código
import base64
base64.b64decode("SGkh/w==").hex() # '486921ff'
base64.b64decode("SGkh/w==").hex(" ") # '48 69 21 ff'
Buffer.from("SGkh/w==", "base64").toString("hex"); // '486921ff'
En Python, b64decode descarta sin avisar los caracteres fuera del alfabeto salvo que pases validate=True, así que una cadena URL-safe puede decodificarse en bytes equivocados sin ningún error. El decodificador "base64" de Node acepta ambos alfabetos. Consulta las páginas de Python y Node.js para más detalles.
Preguntas frecuentes
¿Cómo decodifico Base64 a hex en Linux?
echo 'SGkh/w==' | base64 -d | xxd -p imprime 486921ff. xxd -p salta de línea cada 30 bytes; añade -c 32 para 32 bytes por línea, o usa od -An -tx1 si no tienes xxd instalado.
¿Por qué mi hex contiene ef bf bd?
Esos tres bytes son la forma UTF-8 de �, el carácter de sustitución. Alguna herramienta decodificó primero el Base64 a texto y sustituyó cada byte que no era UTF-8 válido. Decodifica directamente a hex, como hace esta página, y obtendrás los bytes originales.
¿Cuánto ocupa el hex comparado con el Base64?
Alrededor de 1,5 veces más. Cuatro caracteres Base64 contienen tres bytes, que ocupan seis dígitos hex. Un valor SHA-256 de 44 caracteres se convierte en 64 dígitos hex.
¿Acepta Base64URL y data URI?
Sí. - y _ se leen como + y /, el relleno ausente no es problema y se ignora un prefijo data:...;base64,.