当前位置: 首页 > article >正文

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

除文本文件外,其他文件都可以看做是二进制文件,可以单独使用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();
}


http://www.kler.cn/a/511080.html

相关文章:

  • 新星杯-ESP32智能硬件开发--ESP32的I/O组成-系统中断矩阵
  • 【Python运维】用Python管理Docker容器:从`docker-py`到自动化部署的全面指南
  • 万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用
  • 技术洞察:C++在后端开发中的前沿趋势与社会影响
  • 什么是长连接?Netty如何设置进行长连接?
  • 【数据库】MySQL数据库SQL语句汇总
  • CSS的发展历程
  • 爬虫第二篇
  • mac配置stable diffusion以及模型出图优化
  • 【python 基础】Python代码规范 变量基本原理
  • 2025寒假备战蓝桥杯01---朴素二分查找的学习
  • 第15章:Python TDD应对货币类开发变化(二)
  • AIGC视频生成模型:Meta的Emu Video模型
  • 嵌入式硬件篇---PWM电机舵机
  • Unix 与 Linux 深度应用与对比分析
  • 搭建openharmony Docker编译环境
  • 【STM32HAL-----GPIO】
  • 25. 【.NET 8 实战--孢子记账--从单体到微服务】--记账模块--预算金额的币种转换
  • VIT论文阅读与理解
  • 函数递归的介绍
  • 深入了解生成对抗网络(GAN):原理、实现及应用
  • 《CPython Internals》阅读笔记:p232-p249
  • React 第三方状态管理库相关 -- Recoil Zustand 篇
  • 基于 WEB 开发的汽车养护系统设计与实现
  • docker运行镜像命令
  • 论文笔记(六十二)Diffusion Reward Learning Rewards via Conditional Video Diffusion