为什么 MBR 返回的偏移量与 Ubuntu 的命令不同?

为什么 MBR 返回的偏移量与 Ubuntu 的命令不同?
~$ sudo /sbin/fdisk -l /dev/sda | grep sda[0-9]
/dev/sda1 * 2048 234133503 117065728 83 Linux
/dev/sda2 234135550 250068991 7966721 5 扩展
/dev/sda5 234135552 250068991 7966720 82 Linux 交换/Solaris

~$ cat /sys/block/sda/sda1/start
2048

~$ sudo hexdump -s 446 -n 64 /dev/sda
00001be 2080 0021 fe83 ffff 0800 0000 9000 0df4
00001ce fe00 ffff fe05 ffff 9ffe 0df4 2002 00f3
00001de 0000 0000 0000 0000 0000 0000 0000 0000
*
00001fe

最后一个命令用于转储 MBR。从倒数第二个 int(0800 0000)可以看出,它是小端字节序,它编码为 8。8*512=4098,而不是其他两个命令报告的 2048。为什么会有所不同?

答案1

十六进制形式的数字 0800 转换为十进制形式的数字 2048。

将十六进制数转换为十进制的命令是:

echo "ibase=16; hex-number"|bc

运行命令:

echo "ibase=16; 0800"|bc

返回结果:2048

相关内容