Hexdump rispetta l'endianità del suo sistema?


23

Sulla mia macchina ottengo il seguente output quando eseguo questi comandi:

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

L'output di hexdump è little-endian. Questo significa che la mia macchina è little-endian o hexdump usa sempre il formato little-endian?

Risposte:


33

L' hexdumputilità BSD tradizionale utilizza l'endianness della piattaforma, quindi l'output che vedi indica che la tua macchina è little-endian.

Utilizzare hexdump -C(o od -t x1) per ottenere un output byte per byte coerente indipendentemente dall'endianità della piattaforma.


5

Dalla manpage:

 -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.

Il tuo output è little-endian (il byte meno significativo per primo), che è anche l'endianness delle architetture x86 e x86_64, che probabilmente stai usando.


3
Sono solo io o la pagina man non menziona da nessuna parte che tratta le "quantità a due byte" come numeri interi? Pensavo di prendere pillole pazze ...
slashingweapon,

@slashingweapon "quantità a due byte di dati di input" è uint16_t intero.
Ruslan,

"Due byte" non è lo stesso di uint16_t su un sistema little-endian.
slashingweapon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.