Saya ingin menghasilkan paket biner mentah dari hex di baris perintah untuk tujuan pengujian protokol. Saya berharap lebih mudah untuk melakukannya dengan cara ini daripada menulis aplikasi.
Inilah yang saat ini terjadi:
echo '0A' | xxd -b
0000000: 00110000 01000001 00001010
Yang ingin saya miliki adalah:
echo '0A' | xxd -b
0000000: 00001010
atau
echo '0A' | xxd -b
0000000: 01010000
Karena saya tidak yakin dengan endianess yang diperlukan. Saya ingin dapat mengubahnya jika perlu. Apakah ini dapat dicapai?
sumber
50
. Ini salah ketik. Perbaiki sekarangJika Anda menginginkan keluaran biner untuk serangkaian digit hex
xxd -r -p
,. Misalnya:mengubah 0A0B0C0D menjadi empat byte biner (panggilan pertama ke xxd), dan kemudian mengubahnya kembali untuk dicetak (panggilan kedua). Anda mengatakan Anda menginginkan keluaran biner, tetapi contoh yang Anda coba adalah representasi yang dapat dicetak.
Saya tidak tahu apa-apa di mana endianness adalah ambigu pada tingkat menggigit, seperti yang Anda maksudkan dalam contoh kedua Anda. Konversi dalam xxd adalah byte murni pada suatu waktu, tidak dengan asumsi mereka mewakili angka multi-byte tertentu.
sumber
Ya, Anda dapat menggunakannya
xxd
untuk melakukan itu, tetapi Anda mungkin tidak menyukai format input. Dari contoh Anda, 0x0a adalah nilai hex dari baris ASCII. Anda dapat membuat file dengan satu baris baru di dalamnya, lalu gunakanxxd
untuk membuat daftar:Anda bisa mendapatkan satu baris baru
xxd
dari output itu jika Anda memberi tanda yang sesuai:xxd
memiliki format output yang cukup bagus, saya pikir itu tidak terlalu sulit untuk membuat paket Anda menggunakan editor teks, kemudian gunakanxxd -r
untuk pergi ke biner. .sumber