Inilah yang dapat saya pikirkan:
int=65534
printf "0: %.8x" $int | xxd -r -g0 >>file
Sekarang tergantung pada endianness Anda mungkin ingin menukar urutan byte:
printf "0: %.8x" $int | sed -E 's/0: (..)(..)(..)(..)/0: \4\3\2\1/' | xxd -r -g0 >>file
Contoh (diterjemahkan, sehingga terlihat):
printf "0: %.8x" 65534 | sed -E 's/0: (..)(..)(..)(..)/0: \4\3\2\1/' | xxd -r -g0 | xxd
0000000: feff 0000 ....
Ini untuk tidak ditandatangani int, jika int ditandatangani dan nilainya negatif Anda harus menghitung komplemen keduanya. Matematika sederhana.
Anda dapat menggunakan fungsi berikut untuk mengubah nilai numerik menjadi karakter yang sesuai:
chr() {
printf \\$(printf '%03o' $1)
}
Anda harus mengonversi nilai byte satu per satu, setelah satu sama lain dalam urutan yang benar (endianess) untuk mesin/arsitektur yang Anda gunakan. Jadi saya rasa, sedikit penggunaan bahasa skrip lain yang mendukung keluaran biner akan memberikan hasil terbaik.
Lihat apakah ini cocok untuk Anda
perl -e "print pack('L',`stat -c %s in.txt`)">>out.bin
Bagaimana cara memeriksa apakah suatu file kosong di Bash?
Menggunakan Rsync sertakan dan kecualikan opsi untuk menyertakan direktori dan file berdasarkan pola