hexdump -ve '1/1 "%02x"'
xxd -p | tr -d '\n'
Se sei stanco di scrivere questo ogni volta, crea un alias.
Come convertire facilmente in/da semplici dati esadecimali leggibili dalla macchina
In breve.
$ xxd -plain test.txt > test.hex $ xxd -plain -revert test.hex test2.txt $ diff test.txt test2.txt $
Spiegazione:
$ xxd -plain test.txt > test.hex
Questo scrive una codifica esadecimale dei dati in test.txt in un nuovo file test.hex. Il -p
o -plain
L'opzione fa in modo che xxd utilizzi il formato esadecimale "semplice" senza spazi tra coppie di cifre esadecimali (ovvero senza spazi tra i valori dei byte). Questo converte "abc ABC" in "61626320414243". Senza il -p
convertirebbe il testo in un formato esadecimale tradizionale orientato alla parola a 16 bit, che è probabilmente più facile da leggere ma meno compatto e quindi meno adatto come formato di trasmissione e leggermente più difficile da invertire.
$ xxd -plain -revert text.hex test2.txt
Questo usa il -r
o -revert
opzione per l'operazione inversa. Il -plain
l'opzione viene usata di nuovo per indicare che il file esadecimale di input è in formato semplice.
Rendo il nome del file di output diverso dal nome del file originale in modo da poter successivamente confrontare i risultati con il file originale.
$ diff test.txt test2.txt
$
Il comando diff non emette nulla - questo significa che non c'è differenza tra il contenuto del file originale e quello ricostruito.
Sono stanco di scavare in alcune stringhe di formato speciale
Usa alias o dichiara funzioni nel tuo .profile per creare mnemonici in modo da non dover ricordare o scavare nelle pagine man.
o semplicemente ricorda -plain
e -revert
.
Output con wrapping
Sì, ci sono caratteri di nuova riga nell'output. Vuoi evitarlo. Puoi usare -c
o -cols
opzione per specificare la lunghezza delle righe di output per tentare di evitare il ritorno a capo dell'output. -c 0
fornisce la lunghezza predefinita e la pagina man suggerisce che 256 è il limite, ma sembra funzionare oltre.
$ xxd -plain -cols 9999 test.txt > test.hex
$ wc test.txt test.hex
121 880 4603 test.txt
1 1 9207 test.hex
Il wc
Il comando wordcount ci dice quante righe, parole e caratteri ci sono in ogni file.
Quindi 121 righe (880 parole, 4603 byte) di testo ASCII sono state codificate come 1 riga di cifre esadecimali.
Ecco la versione che usa od
utilità (parte di coreutils
pacchetto):
od -An < input | tr -dc '[:alnum:]'