Quando eu hexdump filename.txt
recebo o seguinte como saída:
00000000 ac5a 5afb c08d 5d15 26d0 2491 e8c9 8917
00000010
Quando eu <?= bin2hex(file_get_contents('filename.txt')); ?>
recebo isso:
5aacfb5a8dc0155dd0269124c9e81789
Então, por que o hexdump sugere que o conteúdo deveria estar ac5a5afbc08d5d1526d02491e8c98917
quando o PHP está sugerindo que deveria 5aacfb5a8dc0155dd0269124c9e81789
? Não estou interpretando corretamente a saída do hexdump corretamente?
Respostas:
A diferença é ordem big-endian vs. little-endian .
Comece com os primeiros quatro bytes de saída hexdump:
ac5a 5afb
. Agora mude a ordem dos bytes para obter:Compare isso com a saída do PHP:
Eles combinam.
Por padrão, o BSD
hexdump
exibe a saída com base na resistência da máquina. Se você não quiser isso, pode especificar a-C
opção de obter saída byte a byte e palavra por palavra:fonte