GNU/Linux >> Linux Esercitazione >  >> Linux

Come convertire i dati del file in semplice esadecimale?

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:]'

Linux
  1. Come convertire file in codifica UTF-8 in Linux

  2. Come recuperare i dati Xfs dopo Rm?

  3. Come convertire un file audio in Opus?

  4. Come funziona rm? Cosa fa rm?

  5. Come convertire un file TAR in un file ISO

Come utilizzare Ansible Vault per proteggere i dati sensibili

Come utilizzare gli operatori di test di file Bash in Linux

Come scrivere dati in file in Linux

Come convertire l'immagine della fotocamera Raw in JPEG in Linux

Come convertire un file Windows in un file UNIX

Come eliminare un file di dati AWStats