技术专栏
QT 蓝牙通讯协议浮点数传输
QT 蓝牙通讯协议浮点数传输
协议间传输数据都是以字节流的形式传输的,但是有时候需要传输浮点数,这时候通常的办法是扩大倍数成整数传输,本片文章介绍的是另一种方式,联合体:
union floatingDecimal{
uint8_t i[4];
float f;
};
定义floatingDecimal 类型变量:
floatingDecimal var;
赋值
Var.f = 12.2;
将联合体中的数组拷贝到字节流中传输出去,接收方将接收的4个字节存到联合体数组中,再使用联合体的浮点成员。这样就可以在不扩大倍数的情况下传输浮点数。
我在Qt中以信号槽的形式模拟了这种情况:
signals:
void textSignals(unsigned char *f);
public slots:
void textSlots(unsigned char *c);
connect(this,SIGNAL(textSignals(unsigned char*)),this,SLOT(textSlots(unsigned char*)),Qt::QueuedConnection);
{
floatingDecimal f;
f.f = 12.2;
unsigned char c[4];
c[0] = f.i[0];
c[1] = f.i[1];
c[2] = f.i[2];
c[3] = f.i[3];
emit textSignals(c);
}
void MainWindow::textSlots(unsigned char *c)
{
floatingDecimal f;
f.i[0] = c[0];
f.i[1] = c[1];
f.i[2] = c[2];
f.i[3] = c[3];
qDebug() << f.f;
}
使用qDebug打印出来的值是正确的
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
点赞
收藏
评论
打赏
- 分享
- 举报
评论
0个
手气红包
暂无数据
相关专栏
-
浏览量:2348次2020-08-23 21:47:22
-
浏览量:3184次2020-08-07 17:39:59
-
浏览量:2458次2022-01-16 09:00:16
-
浏览量:5866次2021-04-08 16:25:20
-
浏览量:5376次2022-03-31 11:34:19
-
浏览量:3946次2020-11-17 10:13:00
-
浏览量:4514次2021-04-07 20:01:21
-
浏览量:12081次2020-08-23 21:54:03
-
浏览量:2374次2019-11-21 13:49:33
-
浏览量:4800次2020-08-11 18:51:18
-
浏览量:1461次2020-08-03 13:39:09
-
浏览量:6487次2020-08-15 17:22:26
-
浏览量:2547次2020-07-01 11:05:54
-
浏览量:451次2023-06-03 15:58:33
-
2021-04-06 16:19:37
-
浏览量:3418次2020-08-14 18:36:42
-
浏览量:4465次2019-11-21 09:35:34
-
2021-04-06 16:22:40
-
2021-04-06 16:21:26
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
小王子🤴
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
打赏成功!
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注