读取硬盘MBR时的字节顺序

时间:2011-04-22 02:39:51

标签: cpu-architecture hard-drive mbr

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

$ sudo od -N 512 -x /dev/sda

我希望在输出中按顺序获取字节,但似乎每对字节都是相反的。

例如,以下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个字节都会反转。

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

2 个答案:

答案 0 :(得分:4)

显然,这是正常的。参见:

  

在所有IBM PC,PC兼容或任何   其他小端计算机,   两个或更多的十六进制数   字节总是存储在媒体上或中   内存顺序相反(更多   高效的CPU处理)。就这样   MBR签名,十六进制数0xAA55(或   AA55h),将出现在磁盘编辑器中   如序列:55 AA。

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

答案 1 :(得分:1)

来自od man page

  

' - x'输出为十六进制的双字节   单位。相当于'-t x2'。

  

您可以指定要的字节数   用于解释中的每个数字   按照类型给出数据类型   带小数的指标字符   整数。

所以,也许您会更喜欢-t x1(或-t x4)。