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?

Cory Klein
la source

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.

Gilles 'SO- arrête d'être méchant'
la source
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.

Dennis Kaarsemaker
la source
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