¿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?

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.


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.