首页 > 其他分享 >qt之读写二进制文件(序列化方式)

qt之读写二进制文件(序列化方式)

时间:2025-01-17 20:57:43浏览次数:3  
标签:fileDevice qt fileStream 读写 value QDataStream 序列化 QFile setFloatingPointPrecisio

除文本文件外,其他文件都可以看做是二进制文件,可以单独使用QFile读写二进制文件,但一般结合使用QFile和QDataStream读写二进制文件。

头文件部分主要代码

private:
    QString m_filename;
    template<class T> void writeByStream(T value);
    template<class T> void readByStream(T &value);

cpp中主要实现代码

template <class T>
void MainWindow::writeByStream(T value)
{
    QFile fileDevice(m_filename);
    if(!fileDevice.open(QIODevice::WriteOnly))
        return ;
    QDataStream fileStream(&fileDevice);
    fileStream.setVersion(QDataStream::Qt_6_8);
    if(ui->radioBigEndian->isChecked())
    {
        fileStream.setByteOrder(QDataStream::BigEndian);
    }
    else {
        fileStream.setByteOrder(QDataStream::LittleEndian);
    }
    if(ui->radiosinglePrecision->isChecked())
    {
        fileStream.setFloatingPointPrecision(QDataStream::SinglePrecision);
    }
    else
        fileStream.setFloatingPointPrecision(QDataStream::DoublePrecision);
    fileStream<<value;
    fileDevice.close();
}
template <class T>
void MainWindow::readByStream(T &value)
{
    if(!QFile::exists(m_filename))
        return ;

    QFile fileDevice(m_filename);
    if(!fileDevice.open(QIODevice::ReadOnly))
        return ;
    QDataStream fileStream(&fileDevice);
    fileStream.setVersion(QDataStream::Qt_6_8);
    if(ui->radioBigEndian->isChecked())
    {
        fileStream.setByteOrder(QDataStream::BigEndian);
    }
    else {
        fileStream.setByteOrder(QDataStream::LittleEndian);
    }
    if(ui->radiosinglePrecision->isChecked())
    {
        fileStream.setFloatingPointPrecision(QDataStream::SinglePrecision);
    }
    else
        fileStream.setFloatingPointPrecision(QDataStream::DoublePrecision);
    fileStream>>value;
    fileDevice.close();
}

标签:fileDevice,qt,fileStream,读写,value,QDataStream,序列化,QFile,setFloatingPointPrecisio
From: https://blog.csdn.net/suntingsheng123/article/details/145214376

相关文章

  • 测试Linux系统磁盘读写性能(linux磁盘读写测试)
    测试Linux系统磁盘读写性能(linux磁盘读写测试)测试Linux系统磁盘读写性能(linux磁盘读写测试)测试Linux系统磁盘读写性能(linux磁盘读写测试)Linux系统磁盘读写性能测试广泛应用于云计算、分布式计算、嵌入式系统等地方,用于了解磁盘I/O操作效率,合理调整配置以改进系统性能,下面介绍......
  • 测试Linux系统磁盘读写性能(linux磁盘读写测试)
    测试Linux系统磁盘读写性能(linux磁盘读写测试)测试Linux系统磁盘读写性能(linux磁盘读写测试)测试Linux系统磁盘读写性能(linux磁盘读写测试)Linux系统磁盘读写性能测试广泛应用于云计算、分布式计算、嵌入式系统等地方,用于了解磁盘I/O操作效率,合理调整配置以改进系统性能,下面介绍......
  • 测试Linux系统磁盘读写性能(linux磁盘读写测试)
    测试Linux系统磁盘读写性能(linux磁盘读写测试)测试Linux系统磁盘读写性能(linux磁盘读写测试)测试Linux系统磁盘读写性能(linux磁盘读写测试)Linux系统磁盘读写性能测试广泛应用于云计算、分布式计算、嵌入式系统等地方,用于了解磁盘I/O操作效率,合理调整配置以改进系统性能,下面介绍......
  • Qt以共享内存方式限制应用多开
    1.创建共享内存,如果键所标识的共享内存段已经存在,则不执行附加操作,并返回false。#include<QApplication>#include<QSharedMemory>#include<QMessageBox>intmain(intargc,char*argv[]){QApplicationa(argc,argv);//"AK"键staticQSharedMemory......
  • Qt+OpenCV实现图片压缩(JPEG、PNG)
    一、概述需求:1.编写一个小工具实现图片压缩2.图片仅支持JPEG和PNG格式3.目的是压缩图片在磁盘中所占用的大小4.使用的开发语言是Qt、C++、OpenCV5.压缩的质量可以动态调节如下图所示:ps:1.如果图片是jpeg......
  • qt switchbutton
    qt实现的SwitchButton,从网上抄的代码,然后进行一些修改完善,如下switchbutton.h点击查看代码#ifndefSWITCHBUTTON_H#defineSWITCHBUTTON_H#include<QObject>#include<QWidget>#include<QTimer>#include<QColor>#include<QDebug>#definemyDebugqDebu......
  • PHP反序列化
    一、PHP面向对象的基础知识基本概念1、面向过程VS面向对象以做饭为例,面向过程是自己从原材料到成品全部自己做,面向对象相当于去饭店,点菜,等待结果(上菜)。2、类的定义类是定义了一件事物的抽象特点,它将数据的形式以及这些数据上的操作封装在一起。对象是具有类类型的变量,是......
  • Json 序列化,将对象序列化为Json字符串(此Json序列化,是“不安全的放松JSON转义”,即不会
    ///<summary>///Json序列化帮助类///</summary>publicclassJsonSerializerHelper{///<summary>///将对象序列化为Json字符串(此Json序列化,是“不安全的放松JSON转义”,即不会将物特殊符号和中文进行转码)///</summary>///<paramname="obj"></param>......
  • Go 重写JSON序列化和反序列化方法
    packagemainimport( "encoding/json" "fmt" "log" "strings")typeStructsstruct{ Namestring`json:"name"` Genderint`json:"gender"`}//MarshalJSON重写序列化方法,如果gender是0则改为woman,......
  • 【pyqt】pyqt写一个工具 实现base64编码,解码
    解决思路:使用QSS(QtStyleSheets)对PyQt控件的样式进行定制。为不同的控件添加不同的样式,如背景颜色、字体、边框等。修改后的代码:importsysimportbase64fromPyQt5.QtWidgetsimportQApplication,QWidget,QVBoxLayout,QHBoxLayout,QTextEdit,QPushButton,QLine......