Pular para o conteúdo
nearnull

Conversor de Hexadecimal

Converta texto em hexadecimal e hex de volta em texto, com suporte a UTF-8. Funciona totalmente no seu navegador: nada é enviado a nenhum servidor.

Resultado
O resultado convertido aparece aqui

O que é codificação hexadecimal?

A codificação hexadecimal escreve cada byte como dois caracteres de 0 a 9 e de a a f, então qualquer dado pode ser representado em texto simples imprimível. Esta ferramenta converte nos dois sentidos: transforma texto no hex dos seus bytes UTF-8, e devolve o hex para texto legível. Como trabalha sobre bytes e não sobre caracteres, uma única letra acentuada ou um emoji viram vários pares hex: 'é' é c3 a9 e '🦩' é f0 9f a6 a9. Tudo roda localmente no seu navegador: nada do que você colar é transmitido.

Exemplos

A mesma conversão nas linguagens que você provavelmente vai usar:

JavaScript
const hex = [...new TextEncoder().encode(str)]
  .map((b) => b.toString(16).padStart(2, "0"))
  .join("");
Python
str.encode("utf-8").hex()
bytes.fromhex(hex).decode("utf-8")
Java
HexFormat.of().formatHex(str.getBytes(StandardCharsets.UTF_8))
Go
import "encoding/hex"

hex.EncodeToString([]byte(s))
PHP
bin2hex($str);
hex2bin($hex);
Shell
printf "%s" "$str" | xxd -p
echo "$hex" | xxd -r -p

Casos de uso

Ler um dump hexadecimal

Cole bytes copiados do xxd, hexdump, Wireshark ou de um debugger e recupere a string legível, sem precisar montar um script só para decodificar uma linha.

Ver o que uma string realmente contém

Caracteres invisíveis são o suspeito de sempre quando duas strings parecem idênticas mas não são iguais na comparação. Codificar para hex os expõe: um espaço não separável (c2 a0), um espaço de largura zero (e2 80 8b) ou um retorno de carro sobrando (0d) ficam visíveis.

Montar dados de teste

Gere a sequência exata de bytes que um parser, um protocolo ou um teste de formato binário espera, com o estilo de separador que combina com a linguagem em que você escreve a fixture.

Verificar uma suposição de codificação

Se um texto chega quebrado de um banco de dados ou de uma API, o hex diz se você está vendo UTF-8 lido como Latin-1, UTF-8 codificado duas vezes, ou bytes genuinamente corrompidos.

Perguntas frequentes

Qual codificação de texto esta ferramenta usa?
UTF-8, nos dois sentidos. O texto é codificado nos seus bytes UTF-8, e o hex é decodificado como UTF-8. UTF-8 é o padrão da web, do JSON e de praticamente qualquer API moderna, então é o que você quer, a menos que saiba que está lidando com uma codificação legada.
Por que recebo um erro em um hex que parece perfeitamente válido?
São dois erros diferentes. 'Não é hex válido' significa que a entrada tem caracteres fora de 0-9 e a-f, ou um número ímpar de dígitos (cada byte precisa de exatamente dois). 'Não é UTF-8 válido' significa que o hex foi lido corretamente mas os bytes resultantes não formam texto: isso acontece com dados genuinamente binários, como um arquivo comprimido ou o cabeçalho de uma imagem, ou com texto em outra codificação como Latin-1.
Quais formatos de hex são aceitos na entrada?
Todos os que a ferramenta consegue gerar, e mais alguns. Espaços, vírgulas, quebras de linha e prefixos 0x são removidos antes da leitura, então 48656c6c6f, 48 65 6c 6c 6f, 0x48, 0x65 e hex colado em várias linhas decodificam todos para a mesma coisa.
Por que às vezes um caractere são vários pares hex?
Porque o hex representa bytes, não caracteres. Em UTF-8, caracteres ASCII ocupam um byte, a maioria das letras latinas acentuadas e gregas ocupam dois, a maioria dos caracteres CJK ocupam três, e emoji ocupam quatro. Então uma string de 5 caracteres não é necessariamente 10 dígitos hex: a contagem de bytes mostrada ao lado do resultado é o comprimento real.
Hex é o mesmo que Base64?
Os dois transformam bytes em texto imprimível, mas o hex usa 16 símbolos e ocupa dois caracteres por byte, enquanto o Base64 usa 64 símbolos e ocupa cerca de 1,33 caractere por byte. O hex é mais fácil de ler byte a byte, por isso dumps e debuggers o usam; o Base64 é mais compacto, por isso é usado para embutir dados em JSON, URLs e e-mail.
Minha entrada é enviada para algum lugar?
Não. A conversão roda inteiramente no seu navegador com JavaScript puro. Nada do que você digitar ou colar aqui é transmitido ou armazenado em nenhum servidor.