Come stampare i primi 10 byte in esadecimali di un file?


Risposte:


11

Sono venuto qui vedendo tre risposte pensando che non avrei nulla da aggiungere e che questo sarebbe un esercizio su quante persone possono pubblicare lo stesso 1-liner nel primo minuto di una domanda. Ma trovo persone che usano uno hexdumpstrumento nuovo . Tale comando è molto più lungo di 2 lettere; allude ad una base diversa da The One True Base (base 8); ed è persino evidente dal suo nome cosa fa. Chiaramente questo non è il modo Unix.

Quindi ecco la gioia di od("discarica ottale").

Prima GNU, come troverai sul tuo Linux Mint:

od --format=x1 --read-bytes=10 foo

Ora BSD, dove l'ironia è che in realtà è lo stesso programma di hexdump:

od -t x1 -N 10 foo

1
Mi sono tagliato i denti su microprocessori a 8 bit dove tutto era fatto in esadecimale. Quindi per me, l'unica vera base è 16. Ho usato Unix da circa '84 e una cosa che ho sempre, odiato sempre è la sua fissazione con ottale: non posso sopportare ottale con la sua codifica a 3 bit che non si estenderà senza soluzione di continuità da uno a più byte. E i letterali interi ottali in C e in altre lingue sono un disastro ferroviario che ancora oggi distrugge il caos. (+1, a proposito)
Adrian Pronk,

11

L'opzione -l len | -len lenè per: stop dopo aver scritto gli <len>ottetti.

Usalo con file come questo:

xxd -l 10 file

o

hexdump -C -n 10 file

dove -n lenè uguale -lall'opzione di xxd.


5

Puoi usarlo xxdper farlo.

$ xxd -ps -l 10 FILENAME
546865204d4954204c69

Stampa i primi 10 byte ( -l 10) FILENAMEin formato esadecimale normale ( -ps).

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.