Hexdump respecte-t-il l'endianité de son système?


23

Sur ma machine, j'obtiens la sortie suivante lorsque j'exécute ces commandes:

$ echo foos > myfile
$ hexdump myfile
6f66 736f 000a

La sortie de hexdump est peu-endian. Est-ce à dire que ma machine est petit-endian, ou hexdump utilise-t-il toujours le format petit-endian?

Réponses:


33

L' hexdumputilitaire BSD traditionnel utilise l'endianness de la plate-forme, donc la sortie que vous voyez signifie que votre machine est peu endian.

Utilisez hexdump -C(ou od -t x1) pour obtenir une sortie octet par octet cohérente quelle que soit l'endianité de la plate-forme.


5

Depuis la page de manuel:

 -x      Two-byte hexadecimal display.  Display the input offset in hexa‐
         decimal, followed by eight, space separated, four column, zero-
         filled, two-byte quantities of input data, in hexadecimal, per
         line.

...

 If no format strings are specified, the default display is equivalent to
 specifying the -x option.

Votre sortie est peu endienne (octet le moins significatif en premier), ce qui est également l'endianité des architectures x86 et x86_64, que vous utilisez probablement.


3
Est-ce juste moi, ou la page de manuel ne mentionne-t-elle nulle part qu'elle traite les "quantités à deux octets" comme des entiers? Je pensais que je prenais des pilules folles ...
slashingweapon

@slashingweapon "quantité sur deux octets de données d'entrée" est un uint16_t entier.
Ruslan

"Deux octets" n'est pas la même chose que uint16_t sur un système petit-boutiste.
slashingweapon
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.