十六进制转换成二进制的方案
代码如下:
#/bin/bash
Hex2Bin(){
local string=$1
if [[ -z $string ]]; then
echo "字符串为空"
exit
fi
[[ ${string:0:2} == 0x ]] && local string=${string:2}
for i in `seq 1 ${#string}`
do
local bit=`echo $string |cut -c $i`
if ! [[ $bit == [0-9] || $bit == [a-f] ]];then
echo "输入字符不符合十六进制"
exit
fi
done
#conver to 10进制
local stringDec=`printf %d 0x${string}`
local stringBin=`echo "obase=2;${stringDec}"|bc`
local length=`expr ${#stringBin} % 4`
[[ $length == 1 ]] && local stringBin="000${stringBin}"
[[ $length == 2 ]] && local stringBin="00${stringBin}"
[[ $length == 3 ]] && local stringBin="0${stringBin}"
echo $stringBin
}
Hex2Bin $1
执行结果如下