OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5082|回复: 6

十六进制数组中相邻的两个数怎么相加?

[复制链接]

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2021-9-6
在线时间
9 小时
发表于 2022-6-15 10:32:45 | 显示全部楼层 |阅读模式
1.收到的数据: 4b a 21 1 9e 1 0 0 2.目的:我收到一组数据,想解析十六进制的 19e (转为十进制为414) ,我写了一个程序,最后出来的是 9e(转为十进制为 158)。
3.出现的问题:19e的最高位1丢失了
4.我的程序解析:                        int C,Current;                                              C = ( data[5] << 8 ) + data[4];
                                              Current =  C - 65535  + 1 ;
                                              Current = ~Current;
5.小结:上述哪里出错了呢?




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

896

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4309
金钱
4309
注册时间
2019-9-4
在线时间
896 小时
发表于 2022-6-15 10:36:21 | 显示全部楼层
不应该是C = ( data[3] << 8 ) + data[4];吗
回复 支持 反对

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2021-9-6
在线时间
9 小时
 楼主| 发表于 2022-6-15 10:58:00 | 显示全部楼层
data我定义的是 u8,是不是跟这个位数有关,data【5】超出8位了?如果是这个原因的话,在当前状况下该怎么改一下呢
回复 支持 反对

使用道具 举报

70

主题

6758

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12991
金钱
12991
注册时间
2012-11-26
在线时间
3789 小时
发表于 2022-6-15 11:04:30 | 显示全部楼层
类型强制转换   再移位
学无止境
回复 支持 反对

使用道具 举报

3

主题

805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3832
金钱
3832
注册时间
2017-3-7
在线时间
1671 小时
发表于 2022-6-15 11:57:11 | 显示全部楼层
通过指针转型,考虑下大小端
回复 支持 反对

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2021-9-6
在线时间
9 小时
 楼主| 发表于 2022-6-15 14:57:02 | 显示全部楼层
jermy_z 发表于 2022-6-15 11:04
类型强制转换   再移位

谢谢哦,是这样的,问题解决了!
回复 支持 反对

使用道具 举报

2

主题

452

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4296
金钱
4296
注册时间
2018-5-14
在线时间
930 小时
发表于 2022-6-16 08:47:40 | 显示全部楼层
data[5]<<8会被移出u8类型成0 要么先把data5赋值给c再移位,要么强制类型转换
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 00:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表