Texto para hexadecimal: a forma que os bytes assumem em um traço
O que esta conversão faz
Codifica o texto em UTF-8 e imprime cada byte como dois dígitos hexadecimais. Esta é a notação de capturas de pacote, visualizadores de memória e logs de protocolo, então a conversão é na verdade uma tradução entre o que uma pessoa digita e o que suas ferramentas exibem.
Dois dígitos por byte, sempre
Um byte guarda valores de 0 a 255, e dois dígitos hexadecimais cobrem exatamente essa faixa, de 00 a FF. O par nunca varia, e é isso que torna um despejo hexadecimal fácil de percorrer: dá para contar bytes contando pares, e a coluna de deslocamento à esquerda diz qual par você está olhando. Uma string de oito caracteres são oito pares, e nenhum caractere pode produzir meio par.
Tabela de conversão de texto para hexadecimal
Strings curtas com seus valores de byte em hexadecimal. Pontuação e dígitos viram seus valores ASCII em um único par, enquanto qualquer coisa fora do alfabeto latino se expande em vários pares.
| Texto | Hexadecimal |
|---|---|
| A | 41 |
| Hi | 48 69 |
| OK | 4F 4B |
| 123 | 31 32 33 |
| ! | 21 |
| Go | 47 6F |
Encontrando uma string dentro de uma captura
Procurar texto legível em uma captura de pacote raramente funciona, porque o que está no fio são bytes e o que você digitou são caracteres. Converter a string que você procura em hexadecimal dá a sequência exata a pesquisar, e revela por que uma busca por um nome com acento falha quando a mesma busca sem o acento dá certo: as formas codificadas têm comprimentos diferentes, não apenas caracteres diferentes.
Atenção aos separadores
Esta ferramenta separa os bytes com espaços para facilitar a leitura, enquanto muitas capturas e URLs juntam os dígitos ou usam sinais de porcentagem. Ao pesquisar, remova os espaços ou troque-os pelo separador que a sua ferramenta espera: uma sequência que parece idêntica de relance pode não casar só por causa dos intervalos.
Perguntas frequentes
Como converter texto em hexadecimal à mão?
Consulte o valor de byte UTF-8 de cada caractere e escreva-o como dois dígitos hexadecimais. Para "Hi" isso dá 48 e 69. Para caracteres fora da faixa ASCII você precisa dos valores de byte, e não do ponto de código, já que um caractere pode ocupar vários bytes.
Qual é a diferença entre a saída hexadecimal e a binária?
Nenhuma além da notação. As duas codificam os mesmos bytes UTF-8; o hexadecimal escreve cada byte com dois dígitos e o binário com oito, então o hexadecimal é quatro vezes mais curto e bem mais fácil de percorrer. Escolha hexadecimal para ler e binário quando precisar ver bits individuais.
Por que meu caractere acentuado vira dois bytes?
Porque o UTF-8 codifica em mais de um byte tudo o que está acima da faixa ASCII original, e a maioria das letras latinas acentuadas ocupa dois. Isso é normal e não é corrupção: o caractere simplesmente está fora da faixa que um byte endereça, e qualquer contador de bytes vai ver dois.
É a mesma codificação que uma URL usa?
Parecida, mas não idêntica. A codificação percentual escreve os bytes UTF-8 com um sinal de porcentagem antes de cada par, então os valores de byte batem exatamente com os desta ferramenta e só a pontuação muda. Converter para hexadecimal aqui dá os bytes certos para codificar em percentual.
Posso usar a saída em um literal de array de bytes?
Pode. Os dígitos são exatamente os valores de byte, então acrescentar um prefixo 0x a cada par gera um literal para a maioria das linguagens de programação. A ferramenta imprime em maiúsculas por convenção; minúsculas são igualmente válidas onde você colar.