hexdump против фактического содержимого файла

Когда я делаю hexdump filename.txt Я получаю следующее в качестве вывода:

00000000 ac5a 5afb c08d 5d15 26d0 2491 e8c9 8917
00000010 

Когда я делаю <?= bin2hex(file_get_contents('filename.txt')); ?> Я получаю это:

5aacfb5a8dc0155dd0269124c9e81789

Так почему hexdump предлагает содержание должно быть ac5a5afbc08d5d1526d02491e8c98917 когда PHP предполагает, что они должны быть 5aacfb5a8dc0155dd0269124c9e81789? Я просто не правильно интерпретирую вывод hexdump?

1 ответ

Решение

Разница между порядком байтов и порядком байтов.

Начнем с первых четырех байтов вывода hexdump: ac5a 5afb, Теперь переключите порядок байтов, чтобы получить:

5aac fb5a

Сравните это с выводом PHP:

5aac fb5a

Они совпадают.

По умолчанию BSD hexdump отображает вывод на основе порядкового номера машины. Если вы не хотите этого, вы можете указать -C опция, чтобы получить вывод побайтно, а не пословно:

$ hexdump filename.txt 
0000000 ac5a 5afb c08d 5d15 26d0 2491 e8c9 8917
0000010
$ hexdump -C filename.txt 
00000000  5a ac fb 5a 8d c0 15 5d  d0 26 91 24 c9 e8 17 89  |Z..Z...].&.$....|
00000010
Другие вопросы по тегам