Как прокомментировал @georg.
0xfa * 256 + 0xcf == 0xfacf == 64207
Преобразование работает точно так же.
Итак, если вы видите man hexdump
:
-d, --two-bytes-decimal
Two-byte decimal display. Display the input offset in hexadecimal, followed by eight
space-separated, five-column, zero-filled, two-byte units of input data, in unsigned
decimal, per line.
Так, например:
00000f0 64207 65261 00007 00256 00003 32768 00002 00000
Здесь 00000f0
- шестнадцатеричное смещение.
Затем следуют двухбайтовые единицы входных данных, например, для:.: 64207
в десятичном виде (первые 16 бит - т.е. два байта файла).
Преобразование (в вашем случае):
cf fa
----> двух-единица байта ( порядок следования байтов зависит от вашей архитектуры).
fa * 256 + cf = facf
----> соответственно ----> 0xfacf
(переупорядочение)
И dec * oxfacf
равно 64207
.
Дополнительный вопрос: принято отображать восьмеричные числа, используя три цифры (в отличие от шестнадцатеричного и десятичного), поэтому для каждого байта используется триплет.