web-dev-qa-db-fra.com

Comment convertir les données de fichier en hexagonales simples?

Comment se convertir facilement/à partir de données hexadécimales lisibles à la machine simples (sans pompiers/décalages/vue de caractère) avec xdd ou hexdump?

Je suis fatigué de creuser des chaînes de format spéciales (et de découvrir qu'il commence soudainement à emballer des lignes après n caractères ou de lignes de saut) ou d'écrire un perl d'une doublure à chaque fois.

Pourquoi n'est-ce pas aussi simple que base64/base64 -d?

9
Vi.
[.____] hexdump -e '"% x"' 
 xxd -p | TR -D '\ N' 

Si vous êtes fatigué d'écrire , ceci à chaque fois, créez un alias .

15
user1686

Comment convertir facilement/à partir de données hexadécimales lisibles à la machine simples

En bref.

 $ xxd -plain test.txt> test.hex [.____] $ xxd -plain -réverser test.hex test2.txt 
 $ diff Test.txt 
 $ 

Explication:

$ xxd -plain test.txt > test.hex

Cela écrit un codage hexagonal des données dans test.txt dans un nouveau test de fichier.hex. Les -p ou -plain Option fait xxd Utilisez le format hexagonal "plain" sans espaces entre les paires de chiffres hexagoniques (c'est-à-dire aucun espace entre les valeurs d'octets). Cela convertit "ABC ABC" en "61626320414243". Sans le -p Il convertirait le texte en un format hexdump traditionnel orienté mot de 16 bits, qui est sans doute plus facile à lire mais moins compact et donc moins approprié 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. Les -plain L'option est à nouveau utilisée pour indiquer que le fichier hexagonal d'entrée est en format simple.

Je fais le nom de 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 supporte rien - cela signifie qu'il n'y a pas de différence entre le contenu du fichier original et reconstitué.


J'en ai marre de creuser des chaînes de format spéciales

Utilisez des fonctions d'alias ou déclarez des fonctions de votre .profile pour créer des mnémoniques afin que vous n'ayez pas à vous souvenir ou à creuser dans les pages de l'homme.

ou rappelez-vous juste -plain et -revert.


sortie emballée

Oui, il y a des caractères neufs dans la sortie. Vous voulez éviter cela. Vous pouvez utiliser le -c ou -cols Option Pour spécifier le temps que vous souhaitez que les lignes de sortie puissent tenter d'éviter l'emballage de la sortie. -c 0 Donne la longueur par défaut et la page d'homme suggère 256 est la limite mais elle semble fonctionner au-delà de cela.

$ xxd -plain -cols 9999 test.txt > test.hex
$ wc test.txt test.hex
  121   880  4603 test.txt
    1     1  9207 test.hex

La commande WordCount wc WordCount nous dit combien de lignes, de mots et de caractères sont dans chaque fichier.

SO 121 lignes (880 mots, 4603 octets) de ASCII ont été codées comme une ligne de chiffres hexagonales.

6
RedGrittyBrick

Voici la version utilisant od utilitaire (partie de coreutils paquet):

od -An < input | tr -dc '[:alnum:]'
2
kenorb