Respektiert hexdump die Endianität seines Systems?


23

Auf meinem Computer erhalte ich die folgende Ausgabe, wenn ich diese Befehle ausführe:

$ echo foos > myfile
$ hexdump myfile
6f66 736f 000a

Die Ausgabe von hexdump ist Little-Endian. Bedeutet das, dass mein Computer Little-Endian ist, oder verwendet Hexdump immer das Little-Endian-Format?

Antworten:


33

Das traditionelle BSD- hexdumpDienstprogramm verwendet die Endianität der Plattform, sodass die angezeigte Ausgabe bedeutet, dass Ihre Maschine Little-Endian ist.

Verwenden Sie hexdump -C(oder od -t x1), um unabhängig von der Endianze der Plattform eine konsistente byteweise Ausgabe zu erhalten.


5

Aus der Manpage:

 -x      Two-byte hexadecimal display.  Display the input offset in hexa‐
         decimal, followed by eight, space separated, four column, zero-
         filled, two-byte quantities of input data, in hexadecimal, per
         line.

...

 If no format strings are specified, the default display is equivalent to
 specifying the -x option.

Ihre Ausgabe ist Little-Endian (niederwertigstes Byte zuerst). Dies ist auch die Endianität der x86- und x86_64-Architekturen, die Sie wahrscheinlich verwenden.


3
Geht es nur um mich oder wird in der Manpage nirgendwo erwähnt, dass die "Zwei-Byte-Mengen" als Ganzzahlen behandelt werden? Ich dachte, ich nehme verrückte Pillen ...
Hiebwaffe

@slashingweapon "Zwei-Byte-Menge der Eingabedaten" ist eine uint16_t Ganzzahl.
Ruslan

"Zwei Bytes" ist nicht dasselbe wie "uint16_t" auf einem Little-Endian-System.
Hiebwaffe
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.