Convertir des caractères hexadécimaux en caractères ASCII dans Linux Bash Shell

Vous avez un tas de caractères hexadécimaux et vous voulez les convertir en un système décimal lisible (ASCII) ?

Il existe plusieurs façons de convertir hexadécimal en ASCII sous Linux. Vous pouvez également utiliser ces méthodes dans votre script shell si nécessaire.

Conversion de l’hexadécimal en ASCII sous Linux

L’hexadécimal est un système numérique dans lequel vous utilisez une combinaison de nombres (0-9) pour représenter des valeurs allant de 0 à 9 et des alphabets (AF) pour représenter des valeurs allant de 10 à 15.

Cela peut sembler compliqué mais c’est toujours mieux que la numérotation binaire où tout est 1 et 0.

Hex était largement utilisé dans les microcontrôleurs il y a quelques décennies. Vous pouvez toujours le voir en cours d’utilisation, en particulier avec la palette de couleurs Hex qui est utilisée pour représenter différentes nuances de couleurs.

D’autre part, ASCII signifie American Standard Code for Information Interchange et a un cas d’utilisation complètement différent de l’hexadécimal. ASCII est une méthode utilisée pour convertir les caractères du langage normal en binaire afin que les ordinateurs puissent comprendre les instructions de notre côté.

À travers ce guide, j’inclurai différentes manières de convertir facilement l’hexadécimal en ASCII.

Considérons le code hexadécimal suivant (énoncé du problème) que je veux convertir :

4c696e757868616e64626f6f6b20313233

Et si je réussis à convertir le code hexadécimal ci-dessus, la conversion ASCII devrait ressembler à ceci :

Linuxhandbook 123

Méthode 1 : Utilisation de la commande xxd

xxd est un utilitaire de ligne de commande qui peut créer un vidage hexadécimal à partir du texte donné et vice versa.

Je vais d’abord saisir une chaîne hexadécimale à l’aide de la commande echo et la jumeler avec xxd à l’aide de pipe.

echo 4c696e757868616e64626f6f6b20313233 | xxd -r -p

Ici, l’option de commande -r est utilisée pour convertir le code hexadécimal en ASCII, et -p est utilisée pour imprimer le texte brut.

[email protected]:~$ echo 4c696e757868616e64626f6f6b20313233 | xxd -r -p 
Linuxhandbook [email protected]:~$ 

Comme vous pouvez le voir ci-dessus, la sortie est mélangée avec l’invite dans le terminal car la sortie convertie n’a pas le caractère de nouvelle ligne. Pour le rendre plus lisible, vous pouvez ajouter echo '' à la commande ci-dessus.

echo 4c696e757868616e64626f6f6b20313233 | xxd -r -p && echo ''
Conversion hex en ASCII en utilisant xxd

Méthode 2 : Utilisation de la commande printf

Oui, vous pouvez convertir hexadécimal en ASCII à l’aide de la commande bash printf. Ici, je vais utiliser l’option \x qui prendra en entrée 1 ou deux chiffres comme indiqué ci-dessous :

printf '\x4c\x69\x6e\x75\x78\x68\x61\x6e\x64\x62\x6f\x6f\x6b\x20\x31\x32\x33'

Il n’y a aucun problème si vous obtenez un seul chiffre à la fin de la chaîne hexadécimale et cela fonctionnera bien comme démontré.

Conversion hexadécimal en ASCII à l’aide de printf

Méthode 3 : Utilisation de la commande dc

Vous vous demandez peut-être comment nous pouvons utiliser le calculateur de pont (dc) pour convertir l’hexagone en ASCII et je vais vous montrer exactement comment.

echo "16i 4C696E757868616E64626F6F6B20313233 P" | dc

Ici, 16i est utilisé pour indiquer que vous avez affaire à une base hexadécimale, et P est utilisé pour imprimer la sortie de la commande dc.

En utilisant la commande ci-dessus, vous obtiendrez un résultat similaire à celui indiqué ci-dessous :

Conversion hex en ASCII en utilisant dc

Méthode 4 : Utilisation de la commande Perl

Donc, si Perl est installé sur votre système, vous pouvez facilement convertir hexadécimal en ASCII en utilisant cette méthode. Il suffit d’échanger mon code hexadécimal avec le vôtre dans la commande donnée et c’est tout.

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

Et vous serez accueilli avec les résultats comme indiqué ci-dessous:

Conversion hexadécimal en ASCII à l’aide de Perl

Méthode 5 : Utilisation de la commande sed

Cette méthode est un peu similaire à la précédente, mais vous utilisez ici sed pour filtrer et convertir l’hexadécimal en ASCII à l’aide d’une expression normale.

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

En utilisant la tuyauterie, nous avons collecté la chaîne de hachage via echo, l’avons convertie en associant sed à une expression donnée et avons obtenu la sortie comme donnée.

Conversion hexadécimal en ASCII à l’aide de sed

Méthode 6 : convertir les chaînes hexadécimales stockées dans un fichier texte

Donc, si vous avez une chaîne hexadécimale stockée sous un fichier texte, vous pouvez utiliser cette méthode pour convertir la chaîne hexadécimale stockée en ASCII.

Ma chaîne hexadécimale est stockée dans un fichier hex.txt donc pour convertir cette chaîne, je devrai suivre la commande donnée :

cat hex.txt | xxd -r -p && echo ''

C’est de loin le moyen le plus pratique car vous n’avez pas à saisir des chaînes hexadécimales encore et encore et la meilleure partie est que vous pouvez stocker plusieurs chaînes hexadécimales et les convertir à l’aide de la même commande.

Conversion hexadécimal en ASCII à l’aide d’un fichier hexadécimal

C’était mon point de vue sur la façon dont vous pouvez convertir une chaîne hexadécimale en ASCII en utilisant diverses méthodes. De loin, le dernier est mon préféré car il est assez efficace par rapport aux autres.

5/5 - (1 vote)
SAKHRI Mohamed
SAKHRI Mohamed

Le blog d'un passionné d'informatique qui partage des actualités, des tutoriels, des astuces, des outils en ligne et des logiciels pour Windows, macOS, Linux, Web designer et jeux vidéo.

Publications: 3764

Laisser un commentaire

Your email address will not be published.