GNU/Linux >> Tutoriels Linux >  >> Linux

Comment convertir les données d'un fichier en hexadécimal simple ?

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

Linux
  1. Comment convertir des fichiers en codage UTF-8 sous Linux

  2. Comment convertir un fichier PPK en PEM à l'aide de la commande

  3. Comment convertir ISO8859-15 en UTF8 ?

  4. Comment ça marche ? Que fait rm ?

  5. Comment lister les blocs de données d'un fichier sous Linux ?

Comment utiliser Ansible Vault pour sécuriser les données sensibles

Comment utiliser les opérateurs de test de fichiers Bash sous Linux

Comment écrire des données dans un fichier sous Linux

Comment convertir une image de caméra Raw en JPEG sous Linux

Comment convertir un fichier Windows en un fichier UNIX

Comment supprimer un fichier de données AWStats