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?

Cory Klein
quelle

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.

Gilles 'SO - hör auf böse zu sein'
quelle
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.

Dennis Kaarsemaker
quelle
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