Yang merupakan alat yang baik untuk mengkonversi ASCII ke biner, dan biner ke ASCII?
Saya berharap untuk sesuatu seperti:
$ echo --binary "This is a binary message"
01010100 01101000 01101001 01110011 00100000 01101001 01110011 00100000 01100001 00100000 01100010 01101001 01101110 01100001 01110010 01111001 00100000 01101101 01100101 01110011 01110011 01100001 01100111 01100101
Atau, lebih realistis:
$ echo "This is a binary message" | ascii2bin
01010100 01101000 01101001 01110011 00100000 01101001 01110011 00100000 01100001 00100000 01100010 01101001 01101110 01100001 01110010 01111001 00100000 01101101 01100101 01110011 01110011 01100001 01100111 01100101
Dan juga sebaliknya:
$ echo "01010100 01101000 01101001 01110011 00100000 01101001 01110011 00100000 01100001 00100000 01100010 01101001 01101110 01100001 01110010 01111001 00100000 01101101 01100101 01110011 01110011 01100001 01100111 01100101" | bin2ascii
This is a binary message
PS: Saya menggunakan bash
PS2: Saya harap saya tidak mendapatkan biner yang salah
echo
.Jawaban:
-e expression
mengevaluasi ungkapan yang diberikan sebagaiperl
kode-p
:sed
mode. The ekspresi dievaluasi untuk setiap baris masukan, dengan isi garis disimpan dalam$_
variabel dan dicetak setelah evaluasi ekspresi .-l
: bahkan lebih sepertised
: alih-alih baris penuh, hanya isi baris (yaitu, tanpa pembatas baris) di$_
(dan baris baru ditambahkan kembali pada output). Jadiperl -lpe code
berfungsi sepertised code
kecuali bahwa ituperl
kode yang bertentangan dengansed
kode.unpack "B*"
bekerja pada$_
variabel secara default dan mengekstrak isinya sebagai string bit berjalan dari bit tertinggi dari byte pertama ke bit terendah dari byte terakhir.pack
melakukan kebalikan dariunpack
. Lihatperldoc -f pack
detailnya.Dengan spasi:
(mengasumsikan input dalam blok 8 bit (0-empuk)).
Dengan
unpack "(B8)*"
, kami mengekstrak 8 bit sekaligus, dan kami menggabungkan string yang dihasilkan dengan spasi bersamajoin " "
.sumber
Anda dapat menggunakan
xxd
untuk mengonversi dari ASCII dan biner.Basis konversi
Jika Anda ingin melakukan konversi basis antara Hex, Octal, & Dec Saya biasanya menggunakan alat baris perintah kalkulator dasar (
bc
) untuk melakukan hal-hal seperti itu. Perhatikan bahwabc
selalu sangat pilih-pilih tentang urutan basis yang benar: Anda harus menentukan basis yang dihasilkan (obase
) terlebih dahulu, lalu tambahkan pilihan Andaibase
.sumber
xxd
akan lebih baik, kecuali itu menunjukkan bahwa kolom pertama yang mengganggu dan input dasar di akhir baris.awk
untuk menyingkirkannya tetapi tampaknya tidak memiliki sakelar untuk menonaktifkan tampilan ini.| awk '{print $2}'
. Ada alat-alat lain juga.od
&hexdump
. Saya mencari metode lain menggunakan itu.-p
opsi untuk mendapatkan output 'murni'xxd -b
pendekatan itu sendiri, namun, tidak ada yang bisa digunakanxxd
sendiri untuk mengubah biner kembali ke ASCII. Jadi, saya khawatir Anda harus menggunakan sesuatu sepertiprintf 'obase=16;ibase=2;%s\n' "$n" | bc | xxd -p -r
, dengan $ n berisi angka untuk dikonversi, baik sebagai string panjang digit, atau string digit dipisahkan dengan semi-titik dua. Jika Anda dapat menjamin bahwa $ n cocok dengan tipe aritmatika shell Anda, maka Anda dapat pergi denganprintf '%x\n' $((2#$n)) | xxd -p -r
Menggunakan bc dan bash:
sumber
Solusi Shell untuk mengkonversi biner ke ascii:
sumber
sed
,,tr
danbc
merupakan program eksternal yang disebut dalam skrip shell.Dengan Python
sumber
Menggunakan Python 3:
Disimpan sebagai "bin2ascii" misalnya:
sumber
Pengkodean biner oleh base64
Decoding base64
sumber