Como converter hex para texto
- Cole o hex em Entrada · Hex. Maiúsculas ou minúsculas, com ou sem separadores.
- O texto aparece em Saída · Texto enquanto você digita. Desmarque Ao vivo se preferir converter com Executar.
- Se a saída mostrar
�, abra Charset abaixo da saída e tente outro. O padrão é UTF-8; ASCII, Latin-1, Windows-1252 e mais 23 estão na lista. - Use Copiar saída ou Baixar para o texto. Se o hex for o dump de um arquivo e não texto, Salvar bytes grava os bytes brutos no disco com uma extensão deduzida pelo conteúdo.
O botão Texto → Hex acima da ferramenta inverte a direção; ou vá para o Texto para Hex.
Formatos de hex que o conversor lê
O hex aparece com várias grafias, conforme a ferramenta que o gerou. Todas estas decodificam para Hello:
| Formato | Exemplo | Origem típica |
|---|---|---|
| Puro | 48656c6c6f | xxd -p, sha256sum, dumps de banco de dados |
| Com espaços | 48 65 6c 6c 6f | Wireshark, editores hex |
| Com dois-pontos | 48:65:6c:6c:6f | fingerprints de certificados, saída do openssl |
| Com hífens | 48-65-6C-6C-6F | BitConverter.ToString do .NET |
Prefixo 0x | 0x48 0x65 0x6c 0x6c 0x6f ou 0x48656c6c6f | código C, depuradores |
Escapes \x | \x48\x65\x6c\x6c\x6f | Python, scripts de shell, logs |
Vírgulas, pontos e vírgulas e pontos também servem de separadores. Cole só as colunas de hex: a visualização padrão do xxd começa cada linha com um offset como 00000000: e termina com uma coluna ASCII, então o conversor leria o offset como bytes e depois acusaria erro na primeira letra da coluna ASCII. Rode xxd -p para obter hex puro.
Como ler hex como ASCII
Cada par de dígitos hex é um byte, e no ASCII cada byte abaixo de 80 é um caractere. As faixas que vale a pena lembrar:
| Hex | Caracteres |
|---|---|
20 | espaço |
30–39 | dígitos 0–9 |
41–5A | A–Z |
61–7A | a–z |
21–2F | ! " # $ % & ' ( ) * + , - . / |
0A, 0D | line feed e carriage return (0D 0A é uma quebra de linha do Windows) |
Letras maiúsculas e minúsculas ficam exatamente 20 de distância: 41 é A, 61 é a. Com isso e a tabela dá para ler hex curto de olho. 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 é Hello, world: 2c é a vírgula e 20 o espaço.
Hex para UTF-8: bytes de 80 a FF
Tudo que foge do inglês básico ocupa mais de um byte em UTF-8, e esses bytes são todos 80 ou maiores. Os mesmos bytes geram textos diferentes conforme o charset usado para lê-los:
| Hex | Lido como UTF-8 | Lido como Windows-1252 |
|---|---|---|
63 61 66 c3 a9 | café | café |
e2 82 ac | € | € |
f0 9f 91 8b | 👋 | 👋 |
63 61 66 e9 | caf� | café |
As três primeiras linhas são dados UTF-8; a última é Latin-1 ou Windows-1252, em que é é o byte único e9. Uma sequência de caracteres à e â quase sempre significa bytes UTF-8 lidos com um charset de um byte. Se nenhum charset der um texto que faça sentido, os bytes provavelmente nem são texto: veja Parece ser na linha de status, que indica o formato quando o reconhece.
Hex, Base64 e os mesmos bytes
O hex gasta dois caracteres por byte e o Base64, quatro caracteres a cada três bytes, então o Base64 fica um terço mais curto para os mesmos dados. Se o que você tem começa com algo como SGVsbG8 e contém letras depois do f, é Base64: decodifique com o Base64 para Texto. Para recodificar bytes hex como Base64 para uma API ou um arquivo de configuração, use o Hex para Base64. A comparação entre hex, Base32, Base58 e Base85 mostra quando cada um é usado.
Hex para string no código
bytes.fromhex("48656c6c6f").decode("utf-8") # 'Hello'
bytes.fromhex("48 65 6c 6c 6f").decode("utf-8") # spaces are fine: 'Hello'
bytes.fromhex ignora espaços, mas rejeita dois-pontos e 0x, então remova esses antes. Em Node.js:
Buffer.from("48656c6c6f", "hex").toString("utf8"); // 'Hello'
Buffer.from("48zz65", "hex"); // <Buffer 48>
A segunda linha mostra uma armadilha: Buffer.from para no primeiro caractere que não é hex e devolve o que tem até ali, sem erro. Há mais padrões nas páginas de Python e Node.js.
Perguntas frequentes
Como converter hex para ASCII?
Cole o hex e leia a saída. O ASCII só cobre os bytes de 00 a 7F, então ajuste Charset para ASCII se quiser que qualquer coisa acima disso apareça como � em vez de ser lida como UTF-8.
O que é 48 65 6c 6c 6f em texto?
Hello. 48 é H, 65 é e, 6c é l (duas vezes) e 6f é o.
Por que meu hex vira é ou outros caracteres estranhos?
Os bytes são UTF-8 e estão sendo lidos como Latin-1 ou Windows-1252, ou o contrário. c3 a9 é é em UTF-8 e é em Windows-1252. Troque o Charset até o texto ficar correto.
O que significa "número ímpar de dígitos hex"?
Cada byte tem dois dígitos hex, então o total precisa ser par. Um dígito se perdeu na cópia, muitas vezes no começo ou no fim. Confira o primeiro e o último par da entrada.
Dá para criar um link para uma conversão?
Dá. Adicione #in= e o hex ao endereço da página, por exemplo /hex-to-text/#in=48656c6c6f. A parte depois do # fica no navegador e não é enviada ao servidor.