Como converter Base64 para hex
- Cole o Base64 em Entrada · Base64. Quebras de linha, espaços, preenchimento
=ausente e caracteres URL-safe são aceitos. - Os bytes aparecem em Saída · Hex. A linha de status mostra Parece ser com o tipo de arquivo detectado, se os bytes corresponderem a um formato conhecido.
- Abaixo da saída, escolha Caixa, Separador e Bytes por linha.
- Use Copiar saída ou Baixar para levar o hex. Salvar bytes grava os próprios bytes decodificados como arquivo.
Para o caminho inverso, use o seletor Hex → Base64 ou Hex para Base64.
Opções de saída
O Base64 SGkh/w== guarda quatro bytes. A configuração Separador decide como eles são escritos:
| Separador | Saída | Use para |
|---|---|---|
| Nenhum | 486921ff | comparar com a saída do sha256sum, bancos de dados, URLs |
| Espaço | 48 69 21 ff | ler byte a byte, editores hex |
: | 48:69:21:ff | fingerprints de certificados e chaves |
0x | 0x48 0x69 0x21 0xff | constantes em C, C# ou Java |
\x | \x48\x69\x21\xff | literais de string em Python, C e shell |
Caixa troca para 48 69 21 FF. Bytes por linha em 16 dá o layout de dump conhecido, 16 bytes por linha, o que facilita achar o offset 0x40 ou contar o comprimento de um cabeçalho.
Lendo os primeiros bytes
A maioria dos formatos de arquivo começa com uma assinatura fixa, e em hex essas assinaturas são fáceis de reconhecer. Alguns prefixos de Base64 e o que eles decodificam:
| O Base64 começa com | 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, além de DOCX, XLSX, JAR, APK |
H4sI | 1f 8b 08 | gzip |
Quando os primeiros bytes não batem com nenhum desses, eles ainda podem ser texto num charset inesperado, ou dados criptografados, que em hex parecem uniformemente aleatórios. A lista de prefixos comuns de Base64 tem muitos outros. Se os dados forem um arquivo que você quer abrir, Base64 para arquivo mostra a prévia e salva.
Comparando digests e checksums
Hex é o formato que as ferramentas de checksum imprimem, então converter Base64 para hex é o jeito de comparar um valor de um header ou de um arquivo de configuração com o seu próprio md5sum ou sha256sum:
| Onde aparece | Base64 | Hex |
|---|---|---|
Header Content-MD5 de hello | XUFAKrxLKna5cZ2REBfFkg== | 5d41402abc4b2a76b9719d911017c592 |
SHA-256 de hello | LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ= | 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 |
O mesmo vale para atributos integrity="sha384-…", fingerprints SSH no formato SHA256: (Base64 sem preenchimento) e chaves binárias em JSON. Se dois valores diferem em hex, eles diferem nos bytes; se batem, qualquer diferença no Base64 era só de formatação, como o preenchimento ou o alfabeto URL-safe.
Base64 para hex no 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'
Em Python, o b64decode descarta em silêncio os caracteres fora do alfabeto, a menos que você passe validate=True, então uma string URL-safe pode decodificar para os bytes errados sem nenhum erro. O decodificador "base64" do Node aceita os dois alfabetos. Veja as páginas de Python e Node.js para mais detalhes.
Perguntas frequentes
Como decodificar Base64 para hex no Linux?
echo 'SGkh/w==' | base64 -d | xxd -p imprime 486921ff. O xxd -p quebra a linha a cada 30 bytes; acrescente -c 32 para 32 bytes por linha, ou use od -An -tx1 se o xxd não estiver instalado.
Por que meu hex contém ef bf bd?
Esses três bytes são a forma UTF-8 de �, o caractere de substituição. Alguma ferramenta decodificou o Base64 para texto antes e trocou todo byte que não era UTF-8 válido. Decodifique direto para hex, como esta página faz, e os bytes originais passam intactos.
Quanto o hex é maior que o Base64?
Cerca de 1,5 vez. Quatro caracteres Base64 guardam três bytes, que ocupam seis dígitos hex. Um valor SHA-256 de 44 caracteres vira 64 dígitos hex.
Aceita Base64URL e data URIs?
Aceita. - e _ são lidos como + e /, a falta de preenchimento não é problema e um prefixo data:...;base64, é ignorado.