我正在寻找一些简单的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