GNU/Linux >> Linux Esercitazione >  >> Linux

Come convertire i caratteri esadecimali in ASCII nella shell di Linux?

echo -n 5a | perl -pe 's/([0-9a-f]{2})/chr hex $1/gie'

Nota che questo non salterà i caratteri non esadecimali. Se vuoi solo l'esadecimale (senza spazi dalla stringa originale ecc.):

echo 5a | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie'

Inoltre, zsh e bash supporta questo in modo nativo in echo :

echo -e '\x5a'

Puoi farlo con echo solo, senza le altre cose. Non dimenticare di aggiungere "-n" o otterrai automaticamente un'interruzione di riga:

echo -n -e "\x5a"

Lo facevo con xxd:

echo -n 5a | xxd -r -p

Ma poi mi sono reso conto che in Debian/Ubuntu, xxd fa parte di vim-common e quindi potrebbe non essere presente in un sistema minimale. Per evitare anche Perl (anche IMHO non fa parte di un sistema minimo), ho finito per usare sed, xargs e printf in questo modo:

echo -n 5a | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs printf

Principalmente, voglio solo convertire pochi byte e va bene per tali attività. Il vantaggio di questa soluzione rispetto a quella di ghostdog74 è che può convertire automaticamente stringhe esadecimali di lunghezze arbitrarie. xargs è usato perché printf non legge dallo standard input.


Linux
  1. Come visualizzare i caratteri di controllo (^c, ^d, ^[, …) in modo diverso nella shell?

  2. Come cambiare la shell in Linux

  3. Come la shell BASH carica i suoi file di configurazione in Linux

  4. Come modificare la shell predefinita in Linux

  5. Come modificare la shell predefinita in Linux

Come installare Fish, la shell interattiva amichevole, in Linux

Come limitare l'accesso dell'utente al sistema Linux

Come convertire le immagini in formato ASCII in Linux

Come modificare la shell utente predefinita nel sistema operativo Linux

Come modificare il colore di output di "Echo" in Linux

Come modificare la shell predefinita nel sistema Linux