Como converter texto para hex
- Digite ou cole o texto em Entrada · Texto. O hex aparece em Saída · Hex enquanto você digita.
- Abaixo da entrada, o Charset define como os caracteres viram bytes. Deixe em UTF-8, a menos que o sistema que vai receber espere outra coisa.
- Abaixo da saída, escolha Caixa (minúsculas ou MAIÚSCULAS), Separador (nenhum, espaço,
:,0xou\x) e Bytes por linha (nenhum, 16 ou 32). - Use Copiar saída ou Baixar para o resultado. O botão Hex → Texto transforma de volta em texto, assim como Hex para texto.
Estilos de saída
As opções de separador e de caixa cobrem os lugares habituais onde o hex é colado. Para o texto Hi!:
| Opções | Saída | Onde se encaixa |
|---|---|---|
| nenhum, minúsculas | 486921 | hashes, URLs, JSON |
| espaço, MAIÚSCULAS | 48 69 21 | editores hex, documentação de protocolos |
: | 48:69:21 | fingerprints, listas no estilo MAC |
0x | 0x48 0x69 0x21 | código-fonte em C e assembly |
\x | \x48\x69\x21 | escapes de string em C, Python, printf do Bash |
A forma \x entra direto em um literal de string: printf '\x48\x69\x21' no Bash imprime Hi!. Bytes por linha divide uma saída longa em linhas de 16 ou 32 bytes, para você contar os offsets a olho.
Um caractere, um ou mais bytes
Caracteres ASCII ocupam um byte cada, e o UTF-8 os mantém idênticos, então para texto em inglês os dois charsets geram o mesmo hex. Todo o resto depende do charset:
| Texto | UTF-8 | ISO-8859-1 | UTF-16LE |
|---|---|---|---|
A | 41 | 41 | 41 00 |
é | c3 a9 | e9 | e9 00 |
€ | e2 82 ac | indisponível | ac 20 |
👋 | f0 9f 91 8b | indisponível | 3d d8 4b dc |
Caracteres que um charset não consegue representar são substituídos por ?, e a linha de status diz quantos foram substituídos. Se o hex de outro sistema não bate com o seu, confira primeiro o charset dos dois lados.
Encontrando caracteres invisíveis
Converter para hex é o jeito mais rápido de ver caracteres que parecem não existir na tela. Duas strings que aparecem idênticas podem ter bytes diferentes:
| Hex em UTF-8 | Caractere |
|---|---|
20 | espaço normal |
c2 a0 | espaço não separável, comum em texto copiado de páginas web e do Word |
e2 80 8b | espaço de largura zero |
ef bb bf | byte order mark no início de um arquivo |
0d 0a | quebra de linha do Windows (só 0a no Linux e no macOS) |
Se uma senha, chave de API ou valor de configuração está “correto, mas é rejeitado”, cole-o aqui com o Separador em espaço e procure qualquer um desses. A mesma verificação ajuda antes de codificar texto em Base64 com Texto para Base64: o Base64 preserva cada byte invisível, então eles sobrevivem no valor codificado.
Texto para hex no código
"Hi!".encode("utf-8").hex() # '486921'
"Hi!".encode("utf-8").hex(" ") # '48 69 21' (separator argument, Python 3.8+)
"é".encode("latin-1").hex() # 'e9'
const hex = Array.from(new TextEncoder().encode("café"),
b => b.toString(16).padStart(2, "0")).join(" ");
// '63 61 66 c3 a9'
O TextEncoder sempre produz UTF-8. As páginas de JavaScript e Python mostram as chamadas equivalentes para Base64.
Perguntas frequentes
Como converter uma string em hex?
Cole a string na entrada. Cada caractere vira os seus valores de byte no charset escolhido, dois dígitos hex por byte. Em Python, o mesmo é "Hello".encode("utf-8").hex().
Como fica "Hello" em hex?
48 65 6c 6c 6f em ASCII e UTF-8, que coincidem para letras simples do inglês. Em UTF-16LE é 48 00 65 00 6c 00 6c 00 6f 00.
Por que o é vira dois bytes, c3 a9?
O UTF-8 codifica todo caractere acima de U+007F com dois a quatro bytes. Ajuste o Charset para ISO-8859-1 (Latin-1) ou Windows-1252 se você precisa do byte único e9.
Como obter hex com 0x na frente de cada byte?
Ajuste o Separador para 0x. A saída fica 0x48 0x65 0x6c 0x6c 0x6f. Para um literal de array completo em C ou Rust, o Base64 para array de bytes escreve também a declaração.