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
?
[.____] hexdump -e '"% x"'
xxd -p | TR -D '\ N'
Si vous êtes fatigué d'écrire , ceci à chaque fois, créez un alias .
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.
Voici la version utilisant od
utilitaire (partie de coreutils
paquet):
od -An < input | tr -dc '[:alnum:]'