Lebih
Konversi string hex menjadi ascii di baris perintah bash
Saya memiliki banyak string semacam ini dan saya ingin menemukan perintah untuk mengubahnya dalam ascii, saya mencoba dengan echo -e
dan od
, tetapi tidak berhasil.
0xA7.0x9B.0x46.0x8D.0x1E.0x52.0xA7.0x9B.0x7B.0x31.0xD2
38
3
Ini berhasil bagi saya.
-r
memerintahkannya untuk mengkonversi hex ke ascii sebagai lawan dari mode normalnya yang melakukan sebaliknya-p
memerintahkannya untuk menggunakan format biasa.Kode ini akan mengkonversi teks
0xA7.0x9B.0x46.0x8D.0x1E.0x52.0xA7.0x9B.0x7B.0x31.0xD2
ke dalam aliran 11 byte dengan nilai yang setara. Byte ini akan ditulis ke standard out.Seperti yang telah ditunjukkan oleh orang lain, ini tidak akan menghasilkan string ASCII yang dapat dicetak karena alasan sederhana bahwa byte yang ditentukan bukan ASCII. Anda perlu memposting informasi lebih lanjut tentang bagaimana Anda memperoleh string ini agar kami dapat membantu Anda.
Cara kerjanya: xxd -r menerjemahkan data heksadesimal ke biner (seperti reverse hexdump). xxd mengharuskan setiap baris dimulai dengan nomor indeks dari karakter pertama pada baris tersebut (jalankan hexdump pada sesuatu dan lihat bagaimana setiap baris dimulai dengan nomor indeks). Dalam kasus kita, kita ingin nomor tersebut selalu nol, karena setiap eksekusi hanya memiliki satu baris. Seperti keberuntungan, data kita sudah memiliki angka nol sebelum setiap karakter sebagai bagian dari notasi 0x. Huruf kecil x diabaikan oleh xxd, jadi yang harus kita lakukan adalah memipa setiap karakter 0xhh ke xxd dan biarkan xxd melakukan pekerjaannya.
Tr menerjemahkan titik menjadi spasi sehingga for akan membaginya dengan benar.
echo -e
pasti gagal untuk Anda karena escaping yang salah. Kode berikut bekerja dengan baik untuk saya pada output yang sama dariyour_program with arguments
:Namun harap dicatat bahwa hexstring asli Anda terdiri dari karakter yang tidak dapat dicetak.