中级会员
 
- 积分
- 223
- 金钱
- 223
- 注册时间
- 2020-6-3
- 在线时间
- 45 小时
|
5金钱
modbus发送的指令为03 03 00 02 00 02 64 29
第一个03代表传感器地址 第二个03代表查询功能 00 02 代表从第二位开始查询 00 02代表查询两位 64 29代表校验位
modbus接受的指令为03 03 04 51 EC 40 F0 39 7E
第一个03代表传感器地址 第二个03代表查询功能 04代表收到4个字节数 分别为51 EC 40 F0
这四个字节数就是我想要的数据,现在是十六进制数 请问怎么把他转化为float类型
在网上搜索
float num = 0.0;
unsigned char dddd[4];
dddd[0] =0x51;
dddd[1] = 0xEC;
dddd[2] = 0x40;
dddd[3] = 0xF0;
float* ret = (float*)dddd;
printf("float vlaue : %f\n", *ret);
结果为 -238827243563249672486603718656.000000 感觉不正确
又试
int main(void)
{
printf("heee");
float num = 0.0;
int dddd[4];
dddd[0] =0x51;
dddd[1] = 0xEC;
dddd[2] = 0x40;
dddd[3] = 0xF0;
float* ret = (float*)dddd;
printf("float vlaue : %f\n", *ret);
return 0;
}
结果为0.000000
不知道怎么办了 求大佬指明如何做
|
|