Folgendes könnte mir einfallen:
int=65534
printf "0: %.8x" $int | xxd -r -g0 >>file
Je nach Endianness möchten Sie nun vielleicht die Byte-Reihenfolge tauschen:
printf "0: %.8x" $int | sed -E 's/0: (..)(..)(..)(..)/0: \4\3\2\1/' | xxd -r -g0 >>file
Beispiel (dekodiert, also sichtbar):
printf "0: %.8x" 65534 | sed -E 's/0: (..)(..)(..)(..)/0: \4\3\2\1/' | xxd -r -g0 | xxd
0000000: feff 0000 ....
Dies ist für unsigned int, wenn int signiert und ist der Wert ist negativ Sie müssen das Zweierkomplement berechnen. Einfache Mathematik.
Sie können die folgende Funktion verwenden, um einen numerischen WERT in das entsprechende Zeichen umzuwandeln:
chr() {
printf \\$(printf '%03o' $1)
}
Sie müssen die Byte-Werte einzeln nacheinander in der richtigen Reihenfolge (Endianess) für die von Ihnen verwendete Maschine/Architektur konvertieren. Ich schätze also, ein wenig Verwendung einer anderen Skriptsprache, die binäre Ausgabe unterstützt, würde die Aufgabe am besten erfüllen.
Sehen Sie, ob dies für Sie funktioniert
perl -e "print pack('L',`stat -c %s in.txt`)">>out.bin