de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 Kerby82
Kerby82
Question

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 2012-10-31T14:33:38+00:00 3
ДМИТРИЙ МАЛИКОВ
ДМИТРИЙ МАЛИКОВ
Pertanyaan edit 31 Oktober 2012 в 3:46
Pemrograman
bash
hex
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
 funroll
funroll
6 Mei 2015 в 5:58
2015-05-06T17:58:56+00:00
Lebih
Sumber
Sunting
#17605792

Ini berhasil bagi saya.

$ echo 54657374696e672031203220330 | xxd -r -p
Testing 1 2 3$

-r memerintahkannya untuk mengkonversi hex ke ascii sebagai lawan dari mode normalnya yang melakukan sebaliknya

-p memerintahkannya untuk menggunakan format biasa.

 funroll
funroll
Jawaban edit 10 Mei 2015 в 3:34
116
0
Solution / Answer
Dan Bliss
Dan Bliss
31 Oktober 2012 в 5:33
2012-10-31T17:33:07+00:00
Lebih
Sumber
Sunting
#17605790

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.

TESTDATA=$(echo '0xA7.0x9B.0x46.0x8D.0x1E.0x52.0xA7.0x9B.0x7B.0x31.0xD2' | tr '.' ' ')
for c in $TESTDATA; do
    echo $c | xxd -r
done

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.

20
0
Alexander Amelkin
Alexander Amelkin
2 Desember 2014 в 4:11
2014-12-02T16:11:50+00:00
Lebih
Sumber
Sunting
#17605791

echo -e pasti gagal untuk Anda karena escaping yang salah. Kode berikut bekerja dengan baik untuk saya pada output yang sama dari your_program with arguments:

echo -e $(your_program with arguments | sed -e 's/0x\(..\)\.\?/\\x\1/g')

Namun harap dicatat bahwa hexstring asli Anda terdiri dari karakter yang tidak dapat dicetak.

2
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
UbiBot UK
Terdaftar 14 jam yang lalu
2
Галина Утяшова
Terdaftar 1 hari yang lalu
3
Asilbek Qadamboyev
Terdaftar 4 hari yang lalu
4
Akshit Mehta
Terdaftar 1 minggu yang lalu
5
me you
Terdaftar 1 minggu yang lalu
ID
JA
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi