Trên máy của tôi, tôi nhận được đầu ra sau khi chạy các lệnh sau:
$ echo foos > myfile
$ hexdump myfile
6f66 736f 000a
Đầu ra từ hexdump là endian nhỏ. Điều này có nghĩa là máy của tôi là endian nhỏ hay hexdump luôn sử dụng định dạng endian nhỏ?
Trên máy của tôi, tôi nhận được đầu ra sau khi chạy các lệnh sau:
$ echo foos > myfile
$ hexdump myfile
6f66 736f 000a
Đầu ra từ hexdump là endian nhỏ. Điều này có nghĩa là máy của tôi là endian nhỏ hay hexdump luôn sử dụng định dạng endian nhỏ?
Câu trả lời:
hexdumpTiện ích BSD truyền thống sử dụng tuổi thọ của nền tảng, do đó, đầu ra mà bạn thấy có nghĩa là máy của bạn là endian nhỏ.
Sử dụng hexdump -C(hoặc od -t x1) để có được đầu ra từng byte nhất quán bất kể độ bền của nền tảng.
Từ trang hướng dẫn:
-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.
Đầu ra của bạn là endian nhỏ (byte đáng kể đầu tiên), đây cũng là endian của kiến trúc x86 và x86_64, mà bạn có thể đang sử dụng.
uint16_t số nguyên.