0

我打印了奔腾 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 个字节反转一次。

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

4

2 回答 2

5

显然,这是正常的。看:

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

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

于 2011-04-22T02:48:13.157 回答
1

od 手册页

'-x' 以十六进制两字节单位输出。相当于'-t x2'。

您可以通过在类型指示符后面加上一个十进制整数来指定用于解释给定数据类型中每个数字的字节数。

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

于 2011-04-22T02:47:27.710 回答