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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top