hexdump เคารพระบบ endianness หรือไม่?


23

บนเครื่องของฉันฉันจะได้ผลลัพธ์ต่อไปนี้เมื่อฉันรันคำสั่งเหล่านี้:

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

เอาต์พุตจาก hexdump เป็น endian น้อย นี่หมายความว่าเครื่องของฉันเป็น endian น้อยหรือ hexdump ใช้รูปแบบ little-endian เสมอหรือไม่

คำตอบ:


33

hexdumpยูทิลิตีBSD แบบดั้งเดิมใช้ endianness ของแพลตฟอร์มดังนั้นผลลัพธ์ที่คุณเห็นหมายความว่าเครื่องของคุณเป็น endian น้อย

ใช้hexdump -C(หรือod -t x1) เพื่อรับเอาต์พุตไบต์ต่อไบต์ที่สอดคล้องกันโดยไม่คำนึงถึง endianness ของแพลตฟอร์ม


5

จาก 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.

ผลลัพธ์ของคุณเป็นบิตเล็ก (ไบต์ที่มีนัยสำคัญน้อยที่สุด) ซึ่งเป็น endianness ของสถาปัตยกรรม x86 และ x86_64 ซึ่งคุณอาจใช้


3
มันเป็นเพียงฉันหรือหน้าคนไม่พูดถึงที่ใดก็ตามที่มันกำลังรักษา "ปริมาณสองไบต์" เป็นจำนวนเต็ม? ผมคิดว่าผมกินยาบ้า ...
slashingweapon

@slashingweapon "จำนวนข้อมูลอินพุตสองไบต์" เป็น uint16_tจำนวนเต็ม
Ruslan

"Two bytes" ไม่เหมือนกับ uint16_t ในระบบแบบ end-endian
slashingweapon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.