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