找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1520|回复: 7
收起左侧

16进制数组转16进制长整形

[复制链接]
ID:128363 发表于 2019-9-21 16:58 | 显示全部楼层 |阅读模式
本帖最后由 sageliu 于 2019-9-21 17:04 编辑

Hi all
    我想把读取的16进制数组转16进制长整形,请大家帮忙给个提示,谢谢!!

unsigned char buf[5] = {0xEA,0xFC,0x10,0x20,0x40,0x55};

我想提取数组中buf[2],buf[3],buf[4]的数据,保存在long整形中如long aa=0x102040;一定是16进制格式,谢谢!!

回复

使用道具 举报

ID:213173 发表于 2019-9-21 18:41 | 显示全部楼层
long i;
i=(buf[2]<<16)|(buf[3]<<8)|buf[4];
回复

使用道具 举报

ID:275826 发表于 2019-9-21 18:43 | 显示全部楼层
long a;
  a=buf[2]*256+buf[3]*16+buf[4];
回复

使用道具 举报

ID:235200 发表于 2019-9-21 19:51 | 显示全部楼层
aa=buf[2]<<16+buf[3]<<8+buf[4]
回复

使用道具 举报

ID:614549 发表于 2019-9-21 20:44 | 显示全部楼层
这个要看大端还是小端,具体自己测试一下 ,比如long aa=(buf[4]<<24)|(buf[3]<<16)|(buf[2]<<8)|buf[1],如果数据是反的 ,你就给long aa=(buf[1]<<24)|(buf[2]<<16)|(buf[3]<<8)|buf[4]
回复

使用道具 举报

ID:128363 发表于 2019-9-22 10:11 来自手机 | 显示全部楼层
wulin 发表于 2019-9-21 18:41
long i;
i=(buf[2]

谢谢你的回复,long a=buf[2]<<16|buf[3]<<8,输出a=0x1020,但是buf[2]<<16|buf[3]<<8|buf[4],a=0x1420,请问怎么修改,谢谢!,
回复

使用道具 举报

ID:213173 发表于 2019-9-22 11:27 | 显示全部楼层
sageliu 发表于 2019-9-22 10:11
谢谢你的回复,long a=buf[2]

你想保留数组2、4的高4位与数组3合成一个16位数据0x1420?
unsigned int i;
i=((buf[2]&0xf0)<<8)|((buf[4]&0xf0)<<4)|buf[3];
回复

使用道具 举报

ID:128363 发表于 2019-9-22 12:43 来自手机 | 显示全部楼层
wulin 发表于 2019-9-22 11:27
你想保留数组2、4的高4位与数组3合成一个16位数据0x1420?
unsigned int i;
i=((buf[2]&0xf0)

谢谢,我想转换成long a=0x102040,就是buf[2],buf[3],buf[4]的组合.
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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