Frage
Ich spiele mit dem Unix-hexdump Dienstprogramm. Meine Eingabedatei UTF-8 kodiert, um ein einzelnes Zeichen ñ
enthält, die in hexadezimal C3 B1
UTF-8 ist.
hexdump test.txt
0000000 b1c3
0000002
Hä? Dies zeigt B1 C3
- die Inverse von dem, was ich erwartet hatte! Kann jemand erklären?
Für die erwartete Ausgabe bekommt ich tun:
hexdump -C test.txt
00000000 c3 b1 |..|
00000002
Ich dachte, ich verstehe Codiersysteme ..
Lösung
Dies liegt daran, hexdump standardmäßig mit 16-Bit-Worten und Sie auf einer Little-Endian-Architektur ausgeführt werden. Die Bytefolge b1 c3
wird somit als hex Wort c3b1
interpretiert. Die -C
Option zwingt HexDump zur Arbeit mit Bytes statt Worte.
Andere Tipps
fand ich zwei Möglichkeiten, das zu vermeiden:
hexdump -C file
oder
od -tx1 < file
Ich denke, es ist dumm, dass hexdump entschieden, dass Dateien sind in der Regel 16-Bit-Wort Little-Endian. Sehr verwirrend IMO.