我正在尋找一些簡單的shell腳本方式來將十六進制數字轉換爲0和1個字符的序列。Linux shell腳本:十六進制數字轉換爲二進制字符串
例子:
5F - >「01011111」
是否有完成它或者我應該寫它的一些交換機的任何命令或簡單的方法?
我正在尋找一些簡單的shell腳本方式來將十六進制數字轉換爲0和1個字符的序列。Linux shell腳本:十六進制數字轉換爲二進制字符串
例子:
5F - >「01011111」
是否有完成它或者我應該寫它的一些交換機的任何命令或簡單的方法?
我在Linux中使用'bc'命令。 (複雜得多計算器不是轉換!)
echo 'ibase=16;obase=2;5f' | bc
的ibase參數是輸入基(在這種情況下六),和obase的輸出基底(二進制)。
希望它有幫助。
$ printf '\x5F' | xxd -b | cut -d' ' -f2
01011111
或者
$ dc -e '16i2o5Fp'
1011111
i
命令將彈出棧的頂部,並使用它的輸入基極。Hex
數字必須在上殼體,以避免與直流命令碰撞並且如果輸入基數大於16
較大不限於A-F
。o
命令對輸出庫執行相同的操作。p
命令將在後面用換行符打印堆棧頂部。感謝您的迴應,很高興有這麼多的方式來完成這項任務:)我選擇了「bc」變體 – srnka 2012-03-12 15:53:52
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
相反也適用。
注意:這並不完美,需要完成很多工作,但它正在工作。
在'ibase'之前設置'obase'。如果首先定義「ibase」,那麼'bc'將嘗試將'obase'解釋爲如果它是用'ibase'寫的,可能有錯誤的結果。看[這個問題](http://stackoverflow.com/questions/9889839/bc-and-its-ibase-obase-options)。 – mcmlxxxvi 2014-02-06 10:11:20
使用'bc'版本1.06.95'echo'ibase = 16; obase = 2; 5f'| bc'產生錯誤:'(standard_in)1:語法錯誤'。但是,'echo'ibase = 16; obase = 2; 5F'| bc'工作併產生'1011111'。 – nrz 2017-04-24 16:25:30