~$ 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