Pergunta
Estou brincando com o utilitário Unix Hexdump. Meu arquivo de entrada é UTF-8 codificado, contendo um único caractere ñ
, qual é C3 B1
em UTF-8 hexadecimal.
hexdump test.txt
0000000 b1c3
0000002
Huh? Isso mostra B1 C3
- O inverso do que eu esperava! Alguém pode explicar?
Para obter a saída esperada que eu faço:
hexdump -C test.txt
00000000 c3 b1 |..|
00000002
Eu estava pensando que entendi sistemas de codificação ..
Solução
Isso ocorre porque o HEXDUMP PADROS para usar palavras de 16 bits e você está executando uma arquitetura pouco endiana. A sequência de bytes b1 c3
é assim interpretado como a palavra hexadecimal c3b1
. o -C
A opção força o hexdump a trabalhar com bytes em vez de palavras.
Outras dicas
Encontrei duas maneiras de evitar isso:
hexdump -C file
ou
od -tx1 < file
Eu acho que é estúpido que o Hexdump decidiu que os arquivos geralmente são de 16 bits pequenos endianos. Muito confuso IMO.