Kiedy to zrobię hexdump filename.txt
, otrzymuję następujące dane wyjściowe:
00000000 ac5a 5afb c08d 5d15 26d0 2491 e8c9 8917
00000010
Kiedy to zrobię <?= bin2hex(file_get_contents('filename.txt')); ?>
, dostaję to:
5aacfb5a8dc0155dd0269124c9e81789
Dlaczego więc zrzut heksowy sugeruje, że zawartość powinna być, ac5a5afbc08d5d1526d02491e8c98917
gdy PHP sugeruje, że powinna być 5aacfb5a8dc0155dd0269124c9e81789
? Czy po prostu nie interpretuję poprawnie wyniku zrzutu heksadecymalnego?
Odpowiedzi:
Różnica polega na porządku big-endian vs. little-endian .
Start z pierwszych czterech bajtów wyjściu zrzutu heksowego:
ac5a 5afb
. Teraz przełącz kolejność bajtów, aby uzyskać:Porównaj to z wyjściem PHP:
Pasują do siebie.
Domyślnie BSD
hexdump
wyświetla dane wyjściowe na podstawie endianizmu maszyny. Jeśli nie chcesz, możesz określić-C
opcję uzyskiwania danych wyjściowych bajt po bajcie zamiast słowo po słowie:źródło