Shell 十六进制转换成二进制的方案

十六进制转换成二进制的方案

 代码如下:

#/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

执行结果如下

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部