标题:
怎么把数组里8位二进制转换成16进制
[打印本页]
作者:
zhengaohui
时间:
2018-12-4 22:59
标题:
怎么把数组里8位二进制转换成16进制
比如我现在有数组a[8]={0,1,0,0,1,1,1,0};
那么怎么把他们转换成一个16进制数 0X??呢谢谢
作者:
wulin
时间:
2018-12-5 08:09
Keil编辑器不支持定义位变量数组,所以你的问题根本就不存在。如果是想把unsigned char数组中8个元素的最低位重新组合成1个字节倒是可以的。之于用16进制或10进制表述本质是一回事。
作者:
mosqu
时间:
2018-12-5 08:29
按位与上0xFF
作者:
谢小康4
时间:
2018-12-5 08:57
额,这个不明白是什么意思,如果说二进制数为01001110,转换成16进制是ox4e
作者:
谢小康4
时间:
2018-12-5 09:01
转化的方法是从后面往前数,每四位分开,不足填0,然后是8 4 2 1,一一对应,如果是一则加上,如果是零则不记,然后相加得到10进制数,然后在转化成16进制。
作者:
wxyz
时间:
2018-12-5 09:27
uint8_t i, hex = 0;
for (i=0; i<8; i++)
hex = hex + a[i]<<(7-i);
作者:
xujun
时间:
2018-12-5 09:45
通过位移形式判定
作者:
瓜某某
时间:
2018-12-5 10:14
这二进制数为01001110的话,转换成16进制是0X4E
作者:
reto
时间:
2018-12-5 11:21
十进制和16进制是一样,只是表现方式不一样而已,可以先%10,后/10,将/10的后所得1,2,3,4,5,6分别赋予a,b,c,d,e,f
作者:
ox_410327
时间:
2018-12-5 15:25
八位二进制0000
作者:
ox_410327
时间:
2018-12-5 15:29
8位2进制 最好是记住,4位一组,直接记住8421就行,比如1101 0001,高4位1101=8+4+0+1=13=D,低4位0001=1,,即0xD1
作者:
nikola
时间:
2018-12-9 21:25
楼主的意思是,把a【8】看作 二进制的01001110吗?如果是这样,
作者:
nikola
时间:
2018-12-9 21:34
楼主的意思因该是把数组看作二进制数。可以 用这个办法,先定义一个二位的16进制数初始化位0x00,然后将a每一位左移(<<)到目标位上,然后按位或(|)。
作者:
pingwen1011
时间:
2018-12-10 09:09
uint8_t i, hex = 0;
作者:
macklemore
时间:
2018-12-10 11:01
取四合一,从右向左开始转换,不足时补0
作者:
Eureka!Eureka!
时间:
2018-12-11 13:12
本帖最后由 Eureka!Eureka! 于 2018-12-11 17:01 编辑
可以先装换为10进制,在通过取整和取余获得16进制的高位和低位
for(i=0;i<8;i++)
{
dec=dec+a[7-i]*(2^(7-i));//换成10进制
}
hexhigh=dec/16;//取16进制高位
hexlow=dec%16//取16进制低位
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1