hexdump -ve '1/1 "%02x"'
xxd -p | tr -d '\n'
Si vous en avez marre d'écrire ceci à chaque fois, créez un alias.
Comment convertir facilement vers/depuis des données hexadécimales lisibles par machine
En bref.
$ xxd -plain test.txt > test.hex $ xxd -plain -revert test.hex test2.txt $ diff test.txt test2.txt $
Explication :
$ xxd -plain test.txt > test.hex
Ceci écrit un codage hexadécimal des données dans test.txt dans le nouveau fichier test.hex.The -p
ou -plain
L'option permet à xxd d'utiliser le format hexadécimal "simple" sans espace entre les paires de chiffres hexadécimaux (c'est-à-dire sans espace entre les valeurs d'octet). Cela convertit "abc ABC" en "61626320414243". Sans le -p
cela convertirait le texte en un format de vidage hexadécimal traditionnel orienté mot de 16 bits, qui est sans doute plus facile à lire mais moins compact et donc moins adapté comme format de transmission et légèrement plus difficile à inverser.
$ xxd -plain -revert text.hex test2.txt
Cela utilise le -r
ou -revert
option pour l'opération inverse. Le -plain
L'option est à nouveau utilisée pour indiquer que le fichier hexadécimal d'entrée est au format brut.
Je rends le nom du fichier de sortie différent du nom de fichier d'origine afin que nous puissions comparer ultérieurement les résultats avec le fichier d'origine.
$ diff test.txt test2.txt
$
La commande diff n'affiche rien - cela signifie qu'il n'y a aucune différence entre le contenu du fichier original et reconstitué.
J'en ai assez de creuser des chaînes de format spécial
Utilisez des fonctions d'alias ou de déclaration dans votre .profile pour créer des mnémoniques afin que vous n'ayez pas à vous souvenir ou à fouiller dans les pages de manuel.
ou rappelez-vous simplement -plain
et -revert
.
Sortie encapsulée
Oui, il y a des caractères de nouvelle ligne dans la sortie. Vous voulez éviter cela.Vous pouvez utiliser le -c
ou -cols
option pour spécifier combien de temps vous voulez que les lignes de sortie soient pour tenter d'éviter le retour à la ligne de la sortie. -c 0
donne la longueur par défaut et la page de manuel suggère que 256 est la limite, mais cela semble fonctionner au-delà.
$ xxd -plain -cols 9999 test.txt > test.hex
$ wc test.txt test.hex
121 880 4603 test.txt
1 1 9207 test.hex
Le wc
La commande wordcount nous indique combien de lignes, de mots et de caractères se trouvent dans chaque fichier.
Ainsi, 121 lignes (880 mots, 4 603 octets) de texte ASCII ont été encodées sous la forme d'une ligne de chiffres hexadécimaux.
Voici la version utilisant od
utilitaire (partie de coreutils
paquet):
od -An < input | tr -dc '[:alnum:]'