GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menulis integer ke file biner menggunakan Bash?

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 

Linux
  1. Bagaimana cara menulis stderr ke file saat menggunakan tee dengan pipa?

  2. Cara mengganti spasi pada nama file menggunakan skrip bash

  3. Bagaimana cara menulis beberapa baris string menggunakan Bash dengan variabel?

  1. Bagaimana cara menulis integer ke file biner menggunakan Bash?

  2. Bagaimana Cara Menambahkan File di C, menggunakan Open in O_APPEND Mode di linux?

  3. Bash - Cara mencetak string multi baris (dengan '\n') menggunakan printf

  1. Cara menulis loop di Bash

  2. Bagaimana cara menulis karakter non-ASCII menggunakan gema?

  3. Bagaimana cara menghapus file tanpa menggunakan rm?