Bash

ASCII to Binary 和 Binary to ASCII 轉換工具?

  • April 2, 2022

哪個是將 ASCII 轉換為二進制和將二進制轉換為 ASCII 的好工具?

我希望有類似的東西:

$ 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

或者,更現實的:

$ 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

反之亦然:

$ 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:我正在使用 bash

PS2:我希望我沒有得到錯誤的二進製文件

$ echo AB | perl -lpe '$_=unpack"B*"'
0100000101000010
$ echo 0100000101000010 | perl -lpe '$_=pack"B*",$_'
AB
  • -e *expression*將給定的表達式計算為perl程式碼
  • -p:sed模式。對輸入的每一行計算表達式,將行的內容儲存在變數中並在計算**表達式$_後列印。
  • -l: 甚至更像sed: 而不是整行,只有行的內容(即沒有行分隔符)在$_(並且在輸出中添加一個換行符)。所以perl -lpe code就像程式碼sed codeperl不是sed程式碼一樣工作。
  • unpack "B*"預設情況下對$_變數起作用,並將其內容提取為從第一個字節的最高位到最後一個字節的最低位的位串。
  • pack做相反的事情unpack。詳情請參閱perldoc -f pack

帶空格:

$ echo AB | perl -lpe '$_=join " ", unpack"(B8)*"'
01000001 01000010
$ echo 01000001 01000010 | perl -lape '$_=pack"(B8)*",@F'
AB

(它假設輸入是 8 位塊(0 填充))。

使用unpack "(B8)*",我們一次提取 8 位,並將生成的字元串與空格連接起來join " "

引用自:https://unix.stackexchange.com/questions/98948