QT5.9 dat文件数据存储与读取

QT5.9实现数据存入dat文件并读取

最近工作需要将Can报文中部分数据提取出来,并存到dat文件(因为dat文件体积小),当需要数据分析的时候再从dat文件中提取出来,考虑到dat只能存二进制数据,使用QBytearray数据格式进行存储读取。

整个步骤分为:
1.将需要存储的数据变成bytearray数据,并获得数据长度
2.将bytearray数据依次写入dat文件中
3.打开dat文件,将二进制数据依次读出

代码如下:

/*初始化定义,以保存float数据为例 */
float  fVar[150] ;//初始化变量赋值
int count = 0;
/*将所要保存的150个数据写入float数组*/
  fVar[count++] = U1Value; // U1Value是所需要保存的数据
  if(count == 150)
     {
        SaveDat();
        fVar[149] = {0};
        count = 0;
     }
 /*将float数组转换为bytearray数据并写入dat*/    
   void Window:: SaveDat()
{
    QByteArray array;
    int len_fVar = sizeof(fVar);
    array.resize(len_fVar);  //获取长度
    memcpy(array.data(), &fVar, len_fVar);  //将float数据转换为bytearray数据
    QFile writeFile( QDateTime::currentDateTime().toString("yyyyMMdd") +".dat"); //保存的dat文件以当前日期命名,也可以自己命名
    writeFile.open(QIODevice::WriteOnly|QIODevice::Append);  //打开dat文件并写入
    QDataStream out(&writeFile);
    out << array.data();
    writeFile.close();
}
/*打开dat文件并读取数据*/
    QString datfilename = QFileDialog :: getOpenFileName(this,"open file","","text file(*.dat)");
    QByteArray showt;
    QFile readFile(datfilename);
    readFile.open(QIODevice::ReadOnly);
    QDataStream in(&readFile); 
    in >> showt;  //将dat数据写出到showt中
    float outIntVar[150]; 
    memcpy(&outIntVar, showt.data(), 600);  //将shuowt中的bytearray数据变为float数据
    for (int i = 0;i<150;i++)
    {
      qDebug() << outIntVar[i];  //在控制台将150个数据依次打印
    }
    readFile.close();

整个代码经过测试可以很好的保存及读取数据,并且因为存储的是dat文件所以占用极低的存储空间,适用常规的本地数据存储及读取。

  • 9
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值