Qt中float数组(int、double)与QByteArray二进制之间的无损转换,其实结构体等数据都可以转成二进制的

引言:运用Qt解决实际问题过程中,很容易碰到将float、double、int、转换为二进制数据,或者还原二进制数据到原始类型(float、double、int)。比如在网络中,人脸的信息数组存数据库,等等

1 直接贴代码,这里以“二进制<—>float数组”为例,代码测试了多次没有问题

1.1 float[]---->二进制
#include <QByteArray> 
float val[512] = {“数据是你提前获取的,自己测试10位小数都没有问题”};
QByteArray array;
array.clear();												 //相当于清零,习惯吧
int len_feature = sizeof(feature);             				 //4*512=2048,Qt的float是4字节
memcpy(array.data(), &val, static_cast<size_t>(len_feature));

如何判断你的数据正确的成功转换了呢?

对于我的512个float,应该是512*4=2048字节,相当于1024个”0xff“(0xff只是举例)

你可以直接把二进制写到一个文件中,如txt.bin

#include <QFile>
QFile mybfile("txt.bin");
if (mybfile.open(QIODevice::WriteOnly))
{
    mybfile.write (binaryData);		//只读方式写入txt.bin
    mybfile.close();
}

在这里插入图片描述
txt.bin
在这里插入图片描述

1.2 二进制---->float[]

下面是从数据库取二进制并转成float的例子。

float cov[512] = {0.0};		//定义就初始化
QSqlRecord myrecord =  query.record();		//获取记录
QByteArray binaryData = query.value(myrecord.indexOf("feature")).toByteArray();		//取feature字段并弄成binaryData类型
memcpy(&cov, binaryData.data(), static_cast<size_t>(sizeof(cov)));

结果就不演示了,你可以调试这两个数组,结果是一模一样的。

在完成了这个基础操作后,下面就分享,向SQLite中读写从float转化而来的二进制了。
请看下面的链接:
https://blog.csdn.net/weixin_39956356/article/details/97237554

参考博客:
https://blog.csdn.net/humanking7/article/details/80913474

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值