Apakah hexdump menghormati endianness sistemnya?


23

Di mesin saya, saya mendapatkan output berikut ketika saya menjalankan perintah ini:

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

Output dari hexdump adalah little-endian. Apakah ini berarti bahwa mesin saya adalah little-endian, atau apakah hexdump selalu menggunakan format little-endian?

Jawaban:


33

hexdumpUtilitas BSD tradisional menggunakan endianness platform, sehingga output yang Anda lihat berarti mesin Anda adalah little-endian.

Gunakan hexdump -C(atau od -t x1) untuk mendapatkan output byte-by-byte yang konsisten terlepas dari endianness platform.


5

Dari halaman manual:

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

Output Anda adalah little-endian (byte paling signifikan dahulu), yang juga merupakan endianness dari arsitektur x86 dan x86_64, yang mungkin Anda gunakan.


3
Apakah hanya saya, atau apakah halaman manual tidak menyebutkan di mana pun bahwa itu memperlakukan "kuantitas dua byte" sebagai bilangan bulat? Saya pikir saya mengambil pil gila ...
slashingweapon

@slashingweapon "kuantitas data input dua byte" adalah uint16_t bilangan bulat.
Ruslan

"Two byte" tidak sama dengan uint16_t pada sistem little-endian.
slashingweapon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.