迪文科技论坛

 找回密码
 立即注册
搜索
查看: 947|回复: 4

【提问】如何把十进制大于255的数字转换到十六进制数组...

[复制链接]

3

主题

8

回帖

86

积分

注册会员

Rank: 2

积分
86
发表于 2020-7-20 00:28:08 | 显示全部楼层 |阅读模式
比如传感器传入距离是一个变量juli(如5531MM,换成十六进制是159b),发送给2100地址显示的指令为:
char a_ligth[8] = {0x5A, 0xA5, 0x05, 0x82, 0x21, 0x00, 0x15,
0x9b
};
Serial.write(a_ligth, 8);
有什么方法,可以把这个juli带入数组呢?比如把juli分成两段,a1=0X15,a2=0x9b,数组最后两位改成
char a_ligth[8] = {0x5A, 0xA5, 0x05, 0x82, 0x21, 0x00, a1, a2};

试了一些方法,最后都是转换类型原因不成功。
如果直接写成 char a_ligth[8] = {0x5A, 0xA5, 0x05, 0x82, 0x21, 0x00, 0x00, juli};
juli大于255就显示异常了。

回复

使用道具 举报

0

主题

106

回帖

959

积分

高级会员

Rank: 4

积分
959
发表于 2020-7-20 09:19:02 | 显示全部楼层
你可以先把数据赋值一个临时变量里面,int类型变量,分离高8位,和低八位。或者封装一个函数。再写进数组试试。

data=juli;

a1=(data>>8)& 0xFF;
a2=data&0xFF;

回复

使用道具 举报

3

主题

8

回帖

86

积分

注册会员

Rank: 2

积分
86
 楼主| 发表于 2020-7-20 12:42:58 | 显示全部楼层
kehu20190527 发表于 2020-7-20 09:19
你可以先把数据赋值一个临时变量里面,int类型变量,分离高8位,和低八位。或者封装一个函数。再写进数组试 ...

数组的我试过,可以实现把159b分别装入 CHAR A[3]里,但是取出来不知道怎么拼接,比如a[0]=1,a[1]=5,char  类型怎么连接成15呢?
回复

使用道具 举报

5

主题

39

回帖

166

积分

注册会员

Rank: 2

积分
166
发表于 2020-7-20 13:53:33 | 显示全部楼层
a_ligth[6] =juli>>8;a_ligth[7] =juli;

juli=a_ligth[6]<<8+a_ligth[7];
回复

使用道具 举报

3

主题

8

回帖

86

积分

注册会员

Rank: 2

积分
86
 楼主| 发表于 2020-7-20 22:30:08 | 显示全部楼层
最后执行通过的语句:
int a1;
int a2;
a1=(csbtodwp>>8)& 0xFF;
a2=csbtodwp&0xFF;
char a_ligth[8] = {0x5A, 0xA5, 0x05, 0x82, 0x21, 0x00,a1,a2};
Serial.write(a_ligth, 8);
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-4-15 02:50 , Processed in 0.056782 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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