我打印了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个字节都会反转。
非常困惑,任何帮助将不胜感激。谢谢!
答案 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
)。