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 ..

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top