读取硬盘 MBR 时的字节顺序

0 mbr cpu-architecture hard-drive

我打印了 Pentium M 笔记本电脑硬盘的 MBR。这是我使用的命令:

$ sudo od -N 512 -x /dev/sda
Run Code Online (Sandbox Code Playgroud)

我希望在输出中按顺序获取字节,但似乎每对字节都颠倒了。

例如,以下 16 个字节描述了第二个分区:

0000700…………………………………………0080
0000720 0601 fe07 ffff 7886 0001 1990 0353

这是一个可引导分区。因此,此分区条目中的第一个字节应为 80。第 5 个字节应具有文件系统代码,即 NTFS 的“07”。但是,它们分别出现在第 2 和第 6 位。

另一个例子 - 最后 4 个字节应该是分区的大小。这是有意义的 0x03531990 (28.5GB)。但是,上面的输出显示 1990 0353。

看起来它正在反转每对字节。由于这是一个小端芯片,我可以看到它把最不重要的字节放在最前面,但它不能从字大小工作吗?那将是 4 个字节。上面的输出似乎每 2 个字节反转一次。

对此非常困惑,任何帮助将不胜感激。谢谢!

a3n*_*3nm 5

显然,这是正常的。看:

在所有 IBM PC、PC 兼容计算机或任何其他小端计算机上,两个或更多字节的十六进制数总是以相反的顺序存储在介质或内存中(为了更高效的 CPU 处理)。因此,MBR 签名,十六进制数 0xAA55(或 AA55h),将在磁盘编辑器中显示为序列:55 AA。

来自http://en.wikipedia.org/wiki/Partition_table_%28master_boot_record%29