无法理解字节顺序

无法理解字节顺序

假设我在 emacs 中打开一个 tiff 文件并在 hexl 模式下看到以下内容:

0x08000400

并且我知道文件是小端的。这是否意味着该数字实际上是十进制的 262152,或者

0x00040008 

十六进制吗?如果是 8 位或 16 位,转换为十进制数会有所不同吗?

答案1

对于 8 位值,字节序并不重要。
除此之外,字段的数据结构很重要。

如果您将小端文件作为字节流使用(如您在此处所示),则
16 位值的低字节在高字节之前。因此,“0x08 0x00”表示值 8。

此外,您可能已经知道这一点,但还是值得注意的。
维基百科 TIFF 页面

每个 TIFF 都以 2 字节的字节顺序指示符开头:
“II”表示小端字节顺序,“MM”表示大端字节顺序。
接下来的 2 个字节表示数字 42,之所以
选择这个数字,是因为这是二进制模式 101010,而
“对于其深刻的哲学意义“。

42 读取取决于 2 字节指示器指示的字节顺序。TIFF
文件中的所有字、双字等均根据指示的字节顺序读取。

TIFF 6.0 规范规定,兼容的 TIFF 读取器必须支持两种字节顺序(II 和 MM),但是,TIFF 写入器可以选择适合其图像的字节顺序。这引起了图像处理社区的笑话:TIFF 是“数千种不兼容文件格式”的首字母缩写。

相关内容