Shell 二进制转换成十六进制的方案
提问: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 二进制转换成十六进制的方案相关推荐
- java代码二进制转为十六进制_Java 中二进制转换成十六进制的两种实现方法
Java 中二进制转换成十六进制的两种实现方法 每个字节转成16进制,方法1 /** * 每个字节转成16进制,方法1 * * @param result */ private static Stri ...
- 二进制转换成十六进制输出的C代码
(本博客只提供很厉害的方法,没有代码) 项目需求是需要把一个字节(8bit)的二进制数转换成一个十六进制的数值,然后发送给上位机: 我自己试着编写代码,思路是把这个8bit的二进制数存放到一个数组里面 ...
- 位运算-将二进制转换成十六进制
背景 将二进制数转换成十六进制的表现形式.(就是在获取32位二进制的每四位,拿到二进制的最低四位) 实现 代码实现 public static void BitCalc() {//获取60的二进制Sy ...
- 简单的利用栈 将二进制转换成十六进制
将刚刚的二进制转换成八进制的程序改改就行了,如果有能读懂刚刚程序的人,这个so easy 就是换几个数,我就不多解释了 #include <stdio.h> #include <st ...
- java 二进制转换成十六进制字符串_将二进制字符串转换为十六进制字符串JAVA
如果您不必自己实现该转换,则可以使用现有代码: int decimal = Integer.parseInt(binaryStr,2); String hexStr = Integer.toStrin ...
- python把浮点数转换成16进制_delphi 浮点数float转换成十六进制字符串的方法(FloatToHex)...
重新书写了float型转为十六进制的delphi程序 Function FloatToHex(Value: single): string; var l, i: integer; HexText,te ...
- 通过代码实现将十进制转换成十六进制
通过代码求50的十六进制 上一篇博客已经介绍了十进制转换成十六进制的方法,因此我们可以得到50的二进制为00110010,十六进制为32.下面我将介绍两种方法求出50的十六进制. 方法一:自动实现 思 ...
- c语言的十进制转十六进制字符串,用c语言写一个函数把十进制转换成十六进制,该如何处理...
用c语言写一个函数把十进制转换成十六进制 用c语言写一个函数把十进制转换成十六进制 网上找到一些,感觉有占乱 分享到: ------解决方案-------------------- #include ...
- 计算机内区位码默认是几进制,汉字的区位码怎么转换成十六进制?
一.ASCII码是计算机进行信息交换的最基本字符标准,例如,键盘与计算机主机之间的通信就是靠ASCII的标准来支持的.例如: 大写字母A的ASCII码就是十进制数65,数字0的ASCII就是48,小写 ...
最新文章
- adreno-gpu-profiler
- nginx-URL重写
- Xformode的坑
- 我在一家通信公司上班
- 《计算机网络》学习笔记 ·002【物理层】
- 计算机网络故障检测,计算机网络故障常用诊断工具你会多少
- JVM-绘图展现字节码执行引擎执行过程
- 2018年秋招笔试面试----小学渣求职历险记(中南篇)
- 各种激活破解工具一览
- HYSPLIT简明教程
- oracle工程师 的职业,数据库工程师的职业规划
- 德普图拉在北京香山AI分论坛的主持词
- Foxmail与QQ邮箱关联创建新账户
- linux之间文件拷贝文件,不同的Linux之间拷贝文件
- C++和java的异同点总结
- matlab 检测键盘,matlab检测键盘
- 孙鑫老师VC笔记(转)
- IMG按图搜索商品详情
- 郑州73中学计算机老师,2019年关于“郑州市中学信息技术优质课评比”的通知
- java应用程序接口批量访问_spring中使用mybatis实现批量插入的示例代码