Codificar / Decodificar Hex
Converta texto para/de hexadecimal. UTF-8 safe — emoji, vietnamita, CJK. Separador e prefixo 0x configuráveis.
Hex Encode / Decode
Runs entirely in your browser. Your input never leaves your device.
What next?
How it works
O que é realmente a codificação hexadecimal
A codificação hexadecimal representa cada byte de dados binários como exatamente dois dígitos hexadecimais (0–9, a–f). Como um dígito hex cobre quatro bits (um nibble), dois dígitos hex cobrem todos os 256 valores possíveis de um byte. O resultado é uma string de caracteres ASCII que sempre tem o dobro do comprimento da sequência de bytes original.
Isso não é compressão nem criptografia — é puramente um formato de exibição. Qualquer string hexadecimal pode ser decodificada de volta aos bytes exatos de que foi construída, sem necessidade de chave.
Por que hexadecimal e não decimal ou octal?
Computadores armazenam dados em binário (base 2). O hexadecimal (base 16) é uma potência de dois, então cada dígito hex mapeia limpa mente para exatamente quatro bits binários. O decimal não tem esse alinhamento, razão pela qual programadores usam hex para inspecionar bytes brutos. 0xFF significa 11111111 em binário — essa relação é imediatamente evidente.
Comparação de overhead: Hex vs Base64 vs Binário
| Formato | Bytes → chars de saída | Overhead | |---------|------------------------|----------| | Hex | 1 byte → 2 chars | +100% | | Base64 | 3 bytes → 4 chars | +33% | | Binário | 1 byte → 8 chars | +700% |
Base64 vence quando minimizar o tamanho importa (JWT, data URIs, anexos MIME). Hex vence quando a legibilidade e depuração em nível de byte são mais importantes: um dump hexadecimal permite detectar um byte 0x00 nulo ou sentinela 0xFF de relance.
Casos de uso reais comuns
Dumps de memória e arquivos. Depuradores, editores hex (xxd, hexdump -C) e ferramentas de dump de falhas usam hex para que desenvolvedores possam inspecionar memória bruta byte a byte. O prefixo 0x é a língua franca da programação de baixo nível.
Códigos de cor CSS. A cor #ff6b6b são três valores de um byte: vermelho=255, verde=107, azul=107. O # substitui 0x como convenção de prefixo. Todo desenvolvedor web lê códigos de cor hexadecimais dezenas de vezes por dia.
Endereços MAC. Endereços de hardware Ethernet são seis bytes, convencionalmente escritos como aa:bb:cc:dd:ee:ff com dois pontos como separador. A opção Separador desta ferramenta permite produzir exatamente esse formato.
Resumos de hash criptográfico. SHA-256 produz 32 bytes; SHA-512 produz 64 bytes. Ambos são exibidos quase universalmente como strings hexadecimais. O hash de commit do git como 4c1502f são os primeiros sete caracteres de um resumo SHA-1 em hex.
Ethereum e blockchain. Hashes de transações, endereços de carteira e calldata ABI-encoded são todos hexadecimais — tipicamente com prefixo 0x. A caixa de seleção 0x nesta ferramenta ativa esse prefixo em cada par de bytes.
Depuração de protocolos de rede. Capturas de pacotes no Wireshark mostram payloads em hex. O byte de flags TCP 0x12 (SYN+ACK) é muito mais fácil de ler do que 00010010 em binário ou 18 em decimal.
A armadilha do UTF-8
Quando você digita um caractere como é (U+00E9), o texto são dois bytes UTF-8: 0xc3 0xa9. Isso é correto — é genuinamente ocupa dois bytes em UTF-8. Um emoji como 😀 (U+1F600) são quatro bytes UTF-8: 0xf0 0x9f 0x98 0x80 → oito dígitos hexadecimais.
Texto somente ASCII produz exatamente dois dígitos hex por caractere, porque cada ponto de código ASCII é ≤127 e cabe em um byte.
A convenção do prefixo 0x
O prefixo 0x origina-se em C (padronizado em 1989 como ANSI C). Sinaliza "este literal é hexadecimal" tanto para o compilador quanto para o leitor. A convenção se espalhou para C++, Java, JavaScript, Go, Rust e Python. Em contextos onde a base já está implícita (códigos de cor, endereços MAC, saídas de hash), o prefixo é omitido.
Configurando a ferramenta
- Separador — vazio para string hex compacta (
48656c6c6f), espaço para estilo dump (48 65 6c 6c 6f),:para estilo endereço MAC. - Prefixo 0x — adiciona
0xantes de cada par de bytes, útil para literais de array em C ou input para Ethereum. - Maiúsculas/minúsculas — minúsculas são a convenção para a maioria das ferramentas Unix; maiúsculas correspondem à saída do
certutildo Windows.
Privacidade
Toda a codificação e decodificação roda completamente no seu navegador. Seu texto nunca é enviado a um servidor.
Ferramentas relacionadas
- Base64 Encode/Decode — menor overhead (33%) para transportar binário por canais de texto.
- Binary Encode/Decode — oito caracteres por byte, útil para entender posições individuais de bits.
- URL Encode/Decode — codificação percentual para parâmetros de query e componentes URI.
FAQ
A codificação hexadecimal é o mesmo que criptografia?
Não. A codificação hexadecimal é puramente um formato de exibição — converte cada byte em dois caracteres ASCII legíveis. Qualquer pessoa com a string hexadecimal pode decodificá-la instantaneamente, sem necessidade de chave. Se precisar de confidencialidade, criptografe os dados primeiro (AES, ChaCha20), depois codifique o texto cifrado em hex se precisar de uma representação imprimível. Codificação e criptografia são preocupações ortogonais.
Por que meu caractere produz quatro dígitos hexadecimais em vez de dois?
Porque esse caractere ocupa mais de um byte em UTF-8. A letra é (U+00E9) codifica em dois bytes (0xc3 0xa9), produzindo quatro dígitos hex. Um emoji como 😀 (U+1F600) são quatro bytes UTF-8 — oito dígitos hex. Caracteres ASCII (pontos de código 0–127) sempre produzem exatamente dois dígitos hex porque cabem em um único byte. Este é o comportamento correto, não um bug.
Quando devo usar hex em vez de Base64?
Escolha hex quando a legibilidade em nível de byte importa: depurar dumps de memória, inspecionar hashes criptográficos, ler capturas de pacotes ou formatar endereços MAC. Base64 é melhor quando minimizar o tamanho importa — adiciona apenas 33% de overhead versus 100% do hex. Para a maioria dos casos de transporte (data URIs, JWT, MIME), Base64 é a ferramenta certa; para inspeção humana de bytes brutos, hex vence.
O que significa o prefixo 0x?
O prefixo 0x é uma convenção de C (padronizada em ANSI C89) que marca um literal numérico como hexadecimal. Espalhou-se para C++, Java, JavaScript, Go, Rust e Python. Você o verá em endereços Ethereum, literais de array em C e saídas de depuradores. Em outros contextos — códigos de cor CSS (#ff6b6b) ou endereços MAC (aa:bb:cc) — um separador ou delimitador diferente indica o formato hex.
Qual separador devo usar para endereços MAC?
Use : como separador e letras minúsculas. O formato padrão de endereço MAC é seis pares de bytes separados por dois pontos: aa:bb:cc:dd:ee:ff. Algumas ferramentas de rede mais antigas usam - (estilo Windows ipconfig: AA-BB-CC-DD-EE-FF). Ative maiúsculas se o sistema de destino exigir. Deixe o prefixo 0x desativado — endereços MAC não o utilizam.
Como hex difere de um dump binário?
Hex representa cada byte com dois caracteres (100% de overhead). Binário representa cada byte com oito caracteres (700% de overhead). Ambos codificam a mesma informação. Binário é útil como ferramenta pedagógica para ver posições individuais de bits; hex é a escolha prática para inspecionar dados reais porque é compacto o suficiente para ser escaneado visualmente. Um resumo SHA-256 de 32 bytes são 64 caracteres hex mas 256 caracteres binários.
Posso fazer round-trip de texto com caracteres não ASCII?
Sim, desde que ambos os lados concordem em usar UTF-8. Esta ferramenta codifica sua string de entrada para sua representação de bytes UTF-8, depois codifica esses bytes em hex. A decodificação inverte o processo: hex → bytes → string UTF-8. Se o sistema receptor interpretar os bytes como Latin-1 ou Windows-1252, o texto decodificado será diferente. Garanta o acordo de codificação em ambas as extremidades.
Por que algumas saídas hex parecem 48 65 6c 6c 6f e outras 48656c6c6f?
A única diferença é o separador. Um espaço entre cada par de bytes é o estilo usado por xxd, hexdump e Wireshark — melhora a legibilidade para sequências de bytes longas. Sem separador produz uma string hex compacta comum em resumos de hash, endereços Ethereum e internos de codificação URL. Esta ferramenta permite escolher: vazio para compacto, espaço para estilo dump, : para estilo MAC/IPv6.