Saya mencoba untuk menemukan dua byte di dalam file biner, kemudian meningkatkan nilai kedua byte dan menggantinya di dalam file. Kedua byte tersebut berada pada posisi 0x82-0x83. Untuk saat ini saya telah berhasil mengekstrak kedua byte tersebut menggunakan ini:
#!/usr/bin/env bash
BYTES=$(tail -c +131 "$1" | head -c 2)
Mereka byte memiliki nilai: 1B 1F
. Saya terjebak dengan:
- Bagaimana cara mengubah byte ke integer? Itu harus
6943
desimal. - Cara menambahkan / menggema data biner ke file
- Cara menulis peningkatan byte di dalam file pada posisi 0x82-0x83. Saya bisa menggunakan
head -c 130 original.bin >> new_file.bin && magic_command_writing_bytes_to_file >> new_file.bin && tail -c +133 original.bin
, tetapi harus ada cara yang lebih baik.
Saya bisa melakukannya di PHP, seharusnya lebih mudah, tapi saya tertarik bagaimana melakukan ini di bash.
text-processing
conversion
replace
binary
piotrekkr
sumber
sumber
\x
- di baris dua kode contoh Anda. Seharusnya begituecho -n $'\x1b\x1f' >> test.txt
.printf "%d" 0x1B1F
akan melakukan pekerjaan dengan baik untuk mendapatkan6943
hasil Anda ; mulai dari itu, Anda dapat menggunakan garis yang secara signifikan lebih pintar sepertiprintf "%d" $(xxd -u -ps -l 2 -s 12 test.txt)
dan Anda tidak perlubc
lagi.Oh maaf. Jawaban ini sudah usang, karena saya pikir Anda memiliki nilai heksadesimal yang ditulis sebagai ascii di file Anda.
Anda dapat mengonversi angka heks menjadi sistem desimal via
printf "%d" 0x1B1F
.Jika Anda telah menyimpan byte dalam sebuah variabel
BYTES=1B1F
maka Anda mendapatkan hasilnyaprintf "%d" 0x$BYTES
.Jadi, jika Anda ingin menambah angkanya
Kemudian konversikan kembali
sumber