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

问题描述 投票:6回答:5

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

例:

5F -> "01011111"

是否有任何命令或简单的方法来完成它或我应该为它写一些开关?

linux shell hex
5个回答
7
投票

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

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

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

希望能帮助到你。


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

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

要么

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

1
投票

Perl的printf已经知道二进制:

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

0
投票

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

这是一个例子:

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

产量:

0101111101011111010111110101111101011111

相反也有效。

注意:它并不完美,还有很多工作要做,但它确实有效。

© www.soinside.com 2019 - 2024. All rights reserved.