提问:100101011001010101000111100101 转换成十六进制数是多少?

代码如下:

#!/bin/bash
bin2Hex(){
    local bin=$1
    if [[ -z $bin ]]; then
        echo "字符串为空"
        exit
    fi
    for i in `seq 1 ${#bin}`
    do
        local bitvalue=`echo $bin |cut -c $i`
        if ! [[ $bitvalue == [01] ]];then
            echo "字符串格式错误!"
            exit 
        fi
    done
    local remainder=`expr ${#bin} % 4`
    if [[ $remainder == 1 ]];then
        local bin="000$bin"
    elif [[ $remainder == 2 ]];then
        local bin="00$bin"
    elif [[ $remainder == 3 ]];then
        local bin="0$bin"
    fi
    start=1
    end=4
    local hexvalues=""
    local seqnum=`expr ${#bin} / 4`
    for i in `seq 1 $seqnum`
    do
        local bits=`echo $bin |cut -c $start-$end`
        local bit1=`echo $bits |cut -c 1`
        [[ $bit1 = 1 ]] && bit1value=8 || bit1value=0
        local bit2=`echo $bits |cut -c 2`
        [[ $bit2 = 1 ]] && bit2value=4 || bit2value=0
        local bit3=`echo $bits |cut -c 3`
        [[ $bit3 = 1 ]] && bit3value=2 || bit3value=0
        local bit4=`echo $bits |cut -c 4`
        [[ $bit4 = 1 ]] && bit4value=1 || bit4value=0
        
        local hexvalue=`printf %x $((${bit1value}+${bit2value}+${bit3value}+${bit4value}))`
        local hexvalues="$hexvalues$hexvalue"
        start=$((start+4))
        end=$((end+4))
        
    done
    #echo $hexvalues
    
    local num=`expr ${#hexvalues} % 2`
    local hexseqnum=`expr ${#hexvalues} / 2`
    if [[ $num == 1 ]];then
        local hexvalues="0$hexvalues"
        local hexseqnum=`expr $hexseqnum + 1`
    fi
    local hexstart=1
    local hexend=2
    local hexsums=""
    for i in `seq 1 $hexseqnum`
    do
        local hexsum=`echo $hexvalues |cut -c $hexstart-$hexend`
        local hexsums="${hexsums}0x${hexsum} "
        hexstart=$((hexstart+2))
        hexend=$((hexend+2))
    done
    
    echo $hexsums
}

bin2Hex $1

执行结果如下

Shell 二进制转换成十六进制的方案相关推荐

  1. java代码二进制转为十六进制_Java 中二进制转换成十六进制的两种实现方法

    Java 中二进制转换成十六进制的两种实现方法 每个字节转成16进制,方法1 /** * 每个字节转成16进制,方法1 * * @param result */ private static Stri ...

  2. 二进制转换成十六进制输出的C代码

    (本博客只提供很厉害的方法,没有代码) 项目需求是需要把一个字节(8bit)的二进制数转换成一个十六进制的数值,然后发送给上位机: 我自己试着编写代码,思路是把这个8bit的二进制数存放到一个数组里面 ...

  3. 位运算-将二进制转换成十六进制

    背景 将二进制数转换成十六进制的表现形式.(就是在获取32位二进制的每四位,拿到二进制的最低四位) 实现 代码实现 public static void BitCalc() {//获取60的二进制Sy ...

  4. 简单的利用栈 将二进制转换成十六进制

    将刚刚的二进制转换成八进制的程序改改就行了,如果有能读懂刚刚程序的人,这个so easy 就是换几个数,我就不多解释了 #include <stdio.h> #include <st ...

  5. java 二进制转换成十六进制字符串_将二进制字符串转换为十六进制字符串JAVA

    如果您不必自己实现该转换,则可以使用现有代码: int decimal = Integer.parseInt(binaryStr,2); String hexStr = Integer.toStrin ...

  6. python把浮点数转换成16进制_delphi 浮点数float转换成十六进制字符串的方法(FloatToHex)...

    重新书写了float型转为十六进制的delphi程序 Function FloatToHex(Value: single): string; var l, i: integer; HexText,te ...

  7. 通过代码实现将十进制转换成十六进制

    通过代码求50的十六进制 上一篇博客已经介绍了十进制转换成十六进制的方法,因此我们可以得到50的二进制为00110010,十六进制为32.下面我将介绍两种方法求出50的十六进制. 方法一:自动实现 思 ...

  8. c语言的十进制转十六进制字符串,用c语言写一个函数把十进制转换成十六进制,该如何处理...

    用c语言写一个函数把十进制转换成十六进制 用c语言写一个函数把十进制转换成十六进制 网上找到一些,感觉有占乱 分享到: ------解决方案-------------------- #include ...

  9. 计算机内区位码默认是几进制,汉字的区位码怎么转换成十六进制?

    一.ASCII码是计算机进行信息交换的最基本字符标准,例如,键盘与计算机主机之间的通信就是靠ASCII的标准来支持的.例如: 大写字母A的ASCII码就是十进制数65,数字0的ASCII就是48,小写 ...

最新文章

  1. adreno-gpu-profiler
  2. nginx-URL重写
  3. Xformode的坑
  4. 我在一家通信公司上班
  5. 《计算机网络》学习笔记 ·002【物理层】
  6. 计算机网络故障检测,计算机网络故障常用诊断工具你会多少
  7. JVM-绘图展现字节码执行引擎执行过程
  8. 2018年秋招笔试面试----小学渣求职历险记(中南篇)
  9. 各种激活破解工具一览
  10. HYSPLIT简明教程
  11. oracle工程师 的职业,数据库工程师的职业规划
  12. 德普图拉在北京香山AI分论坛的主持词
  13. Foxmail与QQ邮箱关联创建新账户
  14. linux之间文件拷贝文件,不同的Linux之间拷贝文件
  15. C++和java的异同点总结
  16. matlab 检测键盘,matlab检测键盘
  17. 孙鑫老师VC笔记(转)
  18. IMG按图搜索商品详情
  19. 郑州73中学计算机老师,2019年关于“郑州市中学信息技术优质课评比”的通知
  20. java应用程序接口批量访问_spring中使用mybatis实现批量插入的示例代码

热门文章

  1. 2019 年第 7 周 DApp 影响力排行榜 | TokenInsight
  2. iOS-Appstore上App下架后用另一个新账号上架
  3. CHAP6:通过可视化艺术共享数据
  4. 计算机网络实验报告三
  5. oracle nbu异机恢复,通过NBU进行Oracle异机恢复的实验操作步骤
  6. 火绒安全v5.0.45 附单文件版
  7. 数字系统设计Logsim实例 自主设计 学号音乐盒
  8. Altium中PCB导入二维码
  9. VM虚拟机中如何设置ip地址
  10. (附源码)计算机毕业设计SSM职业学校招生系统