Das Hinzufügen der -r
Option (Reverse-Modus) zu to xxd -b
funktioniert nicht wirklich wie beabsichtigt, da xxd die Kombination dieser beiden Flags einfach nicht unterstützt (es wird ignoriert, -b
wenn beide angegeben werden). Stattdessen müssen Sie die Bits zuerst selbst in Hex konvertieren. Zum Beispiel so:
( echo 'obase=16;ibase=2'; sed -Ee 's/[01]/;\0/g' instructions.txt ) | bc | xxd -r -p > instructions.bin
Vollständige Erklärung:
- Der Teil in den Klammern erstellt ein
bc
Skript. Zunächst wird die Eingangsbasis auf Binär (2) und die Ausgangsbasis auf Hexadezimal (16) gesetzt. Danachsed
druckt der Befehl den Inhaltinstructions.txt
mit einem Semikolon zwischen jeder Gruppe von 4 Bits, was einer Hexadezimalstelle entspricht. Das Ergebnis wird weitergeleitetbc
. - Das Semikolon ist ein Befehlstrennzeichen, dh
bc
, das gesamte Skript besteht darin, jede eingegebene Ganzzahl (nach der Basiskonvertierung) erneut auszugeben. - Die Ausgabe von
bc
ist eine Folge von Hex-Ziffern, die mit den üblichen in eine Datei umgewandelt werden könnenxxd -r -p
.
Ausgabe:
$ hexdump -Cv instructions.bin 00000000 00 00 00 13 02 d1 20 83 00 73 02 b3 00 73 04 33 |...... ..s...s.3| 00000010 00 73 64 b3 00 00 00 13 |.sd.....| 00000018 $ xxd -b -c4 instructions.bin 00000000: 00000000 00000000 00000000 00010011 .... 00000004: 00000010 11010001 00100000 10000011 .. . 00000008: 00000000 01110011 00000010 10110011 .s.. 0000000c: 00000000 01110011 00000100 00110011 .s.3 00000010: 00000000 01110011 01100100 10110011 .sd. 00000014: 00000000 00000000 00000000 00010011 ....