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

server/2025/1/19 2:51:45/

除文本文件外,其他文件都可以看做是二进制文件,可以单独使用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);}elsefileStream.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);}elsefileStream.setFloatingPointPrecision(QDataStream::DoublePrecision);fileStream>>value;fileDevice.close();
}


http://www.ppmy.cn/server/159519.html

相关文章

[2019红帽杯]easyRE

[2019红帽杯]easyRE 一、查壳 无壳&#xff0c;64位 二、IDA分析 在函数表中些搜索不到main&#xff0c;就shifef12字符串搜索。 终于看见有用的了&#xff0c;点进去。 发现是sub_4009C6函数中引用了&#xff0c;再点进去。 很好&#xff0c;菜狗我不会了&#xff0c;看看…

git操作(Windows中GitHub)

使用git控制GitHub中的仓库版本&#xff0c;并在Windows桌面中创建与修改代码&#xff0c;与GitHub仓库进行同步。 创建自己的GitHub仓库 创建一个gen_code实验性仓库用来学习和验证git在Windows下的使用方法&#xff1a; gen_code仓库 注意&#xff0c;创建仓库时不要设置…

LeetCode | 从树到图:深度剖析数据结构与算法的核心精髓

在 LeetCode 的算法题中&#xff0c;树与图是两类不可或缺的重要数据结构。无论是探索二叉树的深度&#xff0c;还是解决复杂的最短路径问题&#xff0c;树与图的应用无处不在。它们不仅是计算机科学的基石&#xff0c;也是提升算法能力的关键。 1.理论 1.1.树与图的基础概念 …

Windows重装后NI板卡LabVIEW恢复正常

在重新安装Windows系统后&#xff0c;NI&#xff08;National Instruments&#xff09;板卡能够恢复正常工作&#xff0c;通常是由于操作系统的重新配置解决了之前存在的硬件驱动、兼容性或配置问题。操作系统重装后&#xff0c;系统重新加载驱动程序、清理了潜在的冲突或损坏的…

docker运行镜像命令

#运行tdengine docker run -d --name tdengine -e TZAsia/Shanghai -v D:\develop\docker_app_data\taos\log:/var/log/taos -v D:\develop\docker_app_data\taos\data:/var/lib/taos -p 6041-6060:6041-6060 -p 6043-6060:6043-6060/udp -d tdengine/tdengine #运行emqx dock…

《在ArkTS中实现模型的可视化调试和监控:探索与实践》

在当今人工智能与鸿蒙Next深度融合的时代&#xff0c;利用ArkTS开发高效智能应用成为开发者们关注的焦点。而模型的可视化调试和监控对于确保模型的准确性和性能至关重要&#xff0c;本文将深入探讨在ArkTS中实现这一目标的方法和实践。 ArkTS与模型开发基础 ArkTS作为一种基…

MarsCode青训营打卡Day1(2025年1月14日)|稀土掘金-16.最大矩形面积问题

资源引用&#xff1a; 最大矩形面积问题 - MarsCode 打卡小记录&#xff1a; 今天是开营第一天&#xff0c;和小伙伴们组成了8人的团队&#xff0c;在接下来的数十天里相互监督&#xff0c;打卡刷题&#xff01; 稀土掘金-16.最大矩形面积问题&#xff08;16.最大矩形面积问题…

Ubuntu 文件夹用途

Ubuntu 文件夹用途 bin: 存放可执行文件&#xff0c;包括系统命令和应用程序。boot: 包含启动相关的文件&#xff0c;如内核和引导加载器。cdrom: 用于挂载CD-ROM驱动器。dev: 包含设备文件&#xff0c;代表系统中的硬件设备。etc: 存放系统配置文件。 /etc/passwd: 存储用户账…