Linux shell脚本:十六进制数到二进制字符串

时间:2012-03-07 17:00:25

标签: linux shell hex

我在shell脚本中寻找一些简单的方法,将十六进制数转换为0和1个字符的序列。

示例:

5F -> "01011111"

是否有任何命令或简单方法可以完成它,还是应该为它编写一些开关?

5 个答案:

答案 0 :(得分:10)

echo "ibase=16; obase=2; 5F" | bc

答案 1 :(得分:7)

$ printf '\x5F' | xxd -b | cut -d' ' -f2
01011111

或者

$ dc -e '16i2o5Fp'
1011111
  • i 命令将弹出堆栈顶部并将其用作输入库。
  • Hex 数字必须为大写,以避免与dc命令发生冲突,并且如果输入基数较大,则不限于 A-F 16
  • o 命令对输出库执行相同的操作。
  • p 命令会打印堆栈顶部,后面会换行。

答案 2 :(得分:7)

我在Linux中使用'bc'命令。 (比转换更复杂的计算器!)

  

echo'ibs = 16; obase = 2; 5f'| BC

ibase参数是输入基数(在本例中为hexa),并且取消输出基数(二进制)。

希望它有所帮助。

答案 3 :(得分:1)

Perl的printf已经知道二进制文件:

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

答案 4 :(得分:0)

我为那些工作写了https://github.com/tehmoon/cryptocli

以下是一个例子:

Option Explicit

Sub EEE()

Dim rng     As Range
Dim pc      As PivotCache
Dim pt      As PivotTable
Dim pf      As PivotField
Dim ws      As Worksheet

Set rng = Range("A1").CurrentRegion '<- Change to the address of the top left cell in your data.

Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rng.Address)
Set ws = ActiveWorkbook.Worksheets.Add
Set pt = pc.CreatePivotTable(TableDestination:=Range("A1"))

With pt
    .PivotFields("Faculty").Orientation = xlRowField
    .PivotFields("NPS").Orientation = xlColumnField
End With


End Sub

收率:

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

反之亦然。

注意:它并不完美,需要做很多工作,但它正在发挥作用。