Ich möchte ein rohes Binärpaket aus hex in der Befehlszeile generieren, um ein Protokoll zu testen. Ich hoffe, es ist einfacher, dies so zu tun, als eine Anwendung zu schreiben.
Folgendes passiert derzeit:
echo '0A' | xxd -b
0000000: 00110000 01000001 00001010
Was ich gerne hätte, ist:
echo '0A' | xxd -b
0000000: 00001010
oder
echo '0A' | xxd -b
0000000: 01010000
Da bin ich mir über die geforderte Endianess nicht sicher. Ich möchte es bei Bedarf ändern können. Ist das erreichbar?
quelle
50
. Es ist ein Tippfehler. JetztWenn Sie die Binärausgabe für eine Folge von Hex-Ziffern wünschen ,
xxd -r -p
. Z.B:konvertiert 0A0B0C0D in vier Bytes Binär (erster Aufruf von xxd) und konvertiert es dann zurück, um druckbar zu sein (zweiter Aufruf). Sie sagen, Sie möchten eine Binärausgabe, aber die Beispiele, die Sie suchen, sind eine druckbare Darstellung.
Ich kenne nichts, bei dem Endianness auf der Knabberebene mehrdeutig ist, wie Sie in Ihrem zweiten Beispiel andeuten. Die Konvertierung in xxd ist jeweils ein reines Byte, ohne dass davon ausgegangen wird, dass sie eine bestimmte Multi-Byte-Zahl darstellen.
quelle
Ja, Sie können dies verwenden
xxd
, aber das Eingabeformat gefällt Ihnen möglicherweise nicht. In Ihrem Beispiel ist 0x0a der Hex-Wert einer ASCII-Newline. Sie können eine Datei mit einem einzelnen Zeilenumbruchxxd
erstellen und dann die Liste erstellen:Sie können eine einzelne Zeile
xxd
aus dieser Ausgabe herausholen, wenn Sie ihr die richtigen Flags geben:xxd
hat ein ziemlich schönes Ausgabeformat, ich denke nicht, dass es zu lästig wäre, Ihre Pakete mit einem Texteditor zu erstellen und dann zu verwendenxxd -r
, um zur Binärdatei zu wechseln. .quelle