引言:运用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