Qt读取二进制文件指定位置处数值,并导出txt格式

参考网址:
https://www.devbean.net/2013/01/qt-study-road-2-binary-file-io/
https://blog.csdn.net/chenyijun/article/details/70653850

主要用到两个类:

  1. 读二进制 QDataStream
    用skipRawData(skipStep)来跳过skipStep个字节;
    用readRawData((char*)&tmp[0],sizeof(float)*ns)来读取ns个字节并存入tmp中。
  2. 写txt文本格式 QTextStream
    将tmp中取出来的数值导入out中,输出到txt文件。
 	 QTextStream out(&outFile);
 	 for(int i = 0 ;i < ns ;i++)
 	{
 		out << tmp[i] << endl;
 	}
    out.flush();

具体测试如下:

//1)通过QDataStream读入数值
    int skipStep = 200;//跳过200个样点
    int ns = 100;//取100个样点
 QString inFileName="D:\\MyProgram\\ReadDat\\1018.dat";
    QFile inFile(inFileName);
    if(!(inFile.open(QIODevice::ReadOnly)))//打开二进制文件
    {
        QMessageBox::critical(nullptr, "notice", "open file error");
        return;
    }

    QDataStream in(&inFile);
    in.skipRawData(skipStep);//跳过skipStep个样点
    in.setByteOrder(QDataStream::BigEndian);

    QVector<float> tmp;
    tmp.resize(ns);
    in.readRawData((char*)&tmp[0],sizeof(float)*ns);//取ns个数据放入tmp
    for(int i=0 ;i<ns;i++)
    {
       // Exchange32((char *)&tmp[i]);//大小端转换
        qDebug()<<tmp[i];
    }
    
//2)通过QTextStream 导出txt数据
    QString outFilePath = "D:\\MyProgram\\ReadDat\\chn1.txt";
    QFile outFile(outFilePath);
    //方式: Append为追加, WriteOnly只写, ReadOnly只读,Truncate表示的是 将原文件内容清空,
    //如果在工程文件下没有chn1_N.txt文件,那么程序将创建该文件,若存在,则将原文件内容清空,
    if(!outFile.open(QIODevice::WriteOnly |QIODevice::Truncate| QIODevice::Text))
    {
        QMessageBox::critical(nullptr, "tips", "create file error");
        return;
    }

    QTextStream out(&outFile); //把数据写到文件中

    for(int i=0 ;i<ns;i++)
    {
        out << tmp[i] << endl;
    }
    out.flush();
    outFile.close(); //写完关闭文件
    inFile.close();//关闭输入文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值