~$ sudo /sbin/fdisk -l /dev/sda | grep sda[0-9] /dev/sda1 * 2048 234133503 117065728 83 Linux /dev/sda2 234135550 250068991 7966721 5 Extended /dev/sda5 234135552 250068991 7966720 82 Linux swap / 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. Вы можете видеть от второго до последнего целого (0800 0000), который является прямым порядком байтов, что он кодирует 8. 8 * 512 = 4098, который не является 2048, сообщаемым двумя другими командами. Почему это отличается?
Число 0800 в шестнадцатеричной форме преобразуется в 2048 в десятичной форме.
Команда для преобразования шестнадцатеричного числа в десятичное::
echo "ibase=16; hex-number"|bc
Выполнение команды:
echo "ibase=16; 0800"|bc
Возвращает результат: 2048