¿Hexdump respeta la resistencia de su sistema?

23

En mi máquina obtengo el siguiente resultado cuando ejecuto estos comandos:

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

La salida de hexdump es little-endian. ¿Significa esto que mi máquina es little-endian, o hexdump siempre usa el formato little-endian?

Cory Klein
fuente

Respuestas:

33

La hexdumputilidad BSD tradicional utiliza la capacidad endian de la plataforma, por lo que la salida que ve significa que su máquina es little endian.

Utilice hexdump -C(o od -t x1) para obtener una salida byte a byte coherente independientemente de la capacidad de la plataforma.

Gilles 'SO- deja de ser malvado'
fuente
5

Desde la página del manual:

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

Su salida es little-endian (byte menos significativo primero), que también es la endianness de las arquitecturas x86 y x86_64, que probablemente esté utilizando.

Dennis Kaarsemaker
fuente
3
¿Soy solo yo, o la página del manual no menciona en ninguna parte que está tratando las "cantidades de dos bytes" como enteros? Pensé que estaba tomando pastillas locas ...
slashingweapon
@slashingweapon "la cantidad de datos de entrada de dos bytes" es un uint16_t número entero.
Ruslan
"Dos bytes" no es lo mismo que uint16_t en un sistema little-endian.
slashingweapon