簡體   English   中英

Linux shell腳本:十六進制數到二進制字符串

[英]Linux shell scripting: hex number to binary string

我在shell腳本中尋找一些簡單的方法,將十六進制數轉換為0和1個字符的序列。

例:

5F -> "01011111"

是否有任何命令或簡單的方法來完成它或我應該為它寫一些開關?

echo "ibase=16; obase=2; 5F" | bc
$ printf '\x5F' | xxd -b | cut -d' ' -f2
01011111

要么

$ dc -e '16i2o5Fp'
1011111
  • i命令將彈出堆棧的頂部並將其用作輸入庫。
  • Hex數字必須為大寫,以避免與dc命令發生沖突,並且如果輸入基數大於16則不限於AF
  • o命令對輸出庫執行相同的操作。
  • p命令將在其后面用換行符打印堆棧的頂部。

我在Linux中使用'bc'命令。 (比轉換更復雜的計算器!)

echo'ibs = 16; obase = 2; 5f'| 公元前

ibase參數是輸入基數(在本例中為hexa),並且取消輸出基數(二進制)。

希望能幫助到你。

Perl的printf已經知道二進制:

$ perl -e 'printf "%08b\n", 0x5D'
01011101

我為那些工作寫了https://github.com/tehmoon/cryptocli

這是一個例子:

echo -n 5f5f5f5f5f | cryptocli dd -decoders hex -encoders binary_string

產量:

0101111101011111010111110101111101011111

相反也有效。

注意:它並不完美,還有很多工作要做,但它確實有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM