Czy hexdump szanuje endianizm swojego systemu?


23

Na moim komputerze otrzymuję następujące dane wyjściowe po uruchomieniu tych poleceń:

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

Dane wyjściowe z hexdump jest little-endian. Czy to oznacza, że ​​moja maszyna jest little-endian, czy też hexdump zawsze używa formatu little-endian?

Odpowiedzi:


33

Tradycyjne hexdumpnarzędzie BSD korzysta z endianizmu platformy, więc wynik, który widzisz, oznacza, że ​​twoja maszyna jest little-endian.

Użyj hexdump -C(lub od -t x1), aby uzyskać spójny wynik bajt po bajcie, niezależnie od endianizmu platformy.


5

Z strony podręcznika:

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

Twój wynik to little-endian (najpierw najmniej znaczący bajt), co jest także endianem architektur x86 i x86_64, których prawdopodobnie używasz.


3
Czy to tylko ja, czy też strona man nie wspomina nigdzie, że traktuje „dwubajtowe wielkości” jako liczby całkowite? Myślałem, że biorę szalone pigułki ...
slashingweapon

@ slashingweapon „dwubajtowa ilość danych wejściowych” jest uint16_t liczbą całkowitą.
Ruslan

„Dwa bajty” to nie to samo co uint16_t w systemie little-endian.
slashingweapon
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.