1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 二进制转换成十六进制输出的C代码

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

时间:2024-01-21 07:22:21

相关推荐

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

(本博客只提供很厉害的方法,没有代码)

项目需求是需要把一个字节(8bit)的二进制数转换成一个十六进制的数值,然后发送给上位机;

我自己试着编写代码,思路是把这个8bit的二进制数存放到一个数组里面,分高4bit和低4bit,分别转换成十进制,然后用switch判断这个十进制,转换成对应十六进制数,例如十进制1对应十六进制1,十进制10对应十六进制A;

问题来了,这样就把一个十六进制拆分成2个数,例如0x1A,我只求出1和A,但是不知道怎样用代码翻译成0x1A。(补充自:/11/30 例如test[0] = 0x01;test[1] = 0x0A; 合成是temp = test[0]<<4 | test[1] ; //0x1A 核心是移位操作)

想了其他一些方法,百度了许多资料,都没有找到二进制转换成十六进制输出的C代码。有些代码虽然可以转换了,还是输出的十六进制也是拆分成字符串形式输出的,不是一个完整的十六进制。

问了同事,原来有更加简单的方法实现项目需求;

从项目背景说起,是一对光幕测身高的设备,光幕接收端通过8个 TSOP6238 接收红外光,当某个节点没有接收到红外光,就把这个节点置1,否则置0;

所以我才想要把8个bit的二进制数转换成十六进制。

其实不用这样复杂,方法是最基本的C语言位操作

划重点:::

先初始化一个变量为0x00(例如RS485_2_TXbuf[3] = 0x00;),设置一个8次轮询,每个轮询中,当接触不到红外光,表示这个节点被挡住,置1,用或操作(|);

例如RS485_2_TXbuf[3] |= 0x01<<1;RS485_2_TXbuf[3] |= 0x01<<5;

最后得到的这个变量,就是最终的形态,也是一个十六进制数。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。