Je voudrais générer un paquet binaire brut à partir de hex dans la ligne de commande dans le but de tester un protocole. J'espère que c'est plus simple de le faire de cette façon que d'écrire une application.
Voici ce qui se passe actuellement:
echo '0A' | xxd -b
0000000: 00110000 01000001 00001010
Ce que j'aimerais avoir c'est:
echo '0A' | xxd -b
0000000: 00001010
ou
echo '0A' | xxd -b
0000000: 01010000
Comme je ne suis pas sûr de l'endianisme requis. J'aimerais pouvoir le changer si nécessaire. Est-ce réalisable?
la source
50
. C'est une faute de frappe.Si vous voulez que la sortie binaire pour une chaîne de caractères hexadécimaux,
xxd -r -p
. Par exemple:convertit 0A0B0C0D en quatre octets de binaire (premier appel à xxd), puis le reconvertit pour être imprimable (deuxième appel). Vous dites que vous voulez une sortie binaire, mais les exemples que vous essayez sont une représentation imprimable.
Je ne connais rien où l'endianité soit ambiguë au niveau du grignotage, comme vous l'imaginez dans votre deuxième exemple. La conversion dans xxd est un octet pur à la fois, ne supposant pas qu'ils représentent un nombre à plusieurs octets particulier.
la source
Oui, vous pouvez le
xxd
faire, mais vous n'aimerez peut-être pas le format d'entrée. Dans votre exemple, 0x0a est la valeur hexadécimale d'une nouvelle ligne ASCII. Vous pouvez créer un fichier avec une seule nouvelle ligne, puis utiliserxxd
pour créer la liste:Vous pouvez obtenir une seule nouvelle ligne à
xxd
partir de cette sortie si vous lui donnez les indicateurs appropriés:xxd
a un format de sortie assez agréable, je ne pense pas que ce serait trop onéreux de créer vos paquets à l'aide d'un éditeur de texte, puis d'utiliserxxd -r
pour passer au binaire. .la source