【字符编码】文本文件与二进制文件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

      • 一、核心定义与本质区别
      • 二、关键特征对比
      • 三、典型示例
      • 四、C++/Qt 开发中的读写差异
      • 五、核心关联
      • 六、选型建议

文本文件和二进制文件是计算机中两种核心的文件存储格式,其本质区别在于数据的编码与组织方式,进而影响可读性、存储效率和适用场景。以下是详细的对比分析与说明:

一、核心定义与本质区别

  1. 文本文件
    基于字符编码规则存储数据,文件内容是字符的编码值序列(如 ASCII、UTF-8、GBK 等)。
    本质:存储的是人类可识别的字符,通过编码映射关系将二进制数据转换为文字。

  2. 二进制文件
    直接存储数据的原始二进制形式,不经过字符编码转换,按数据在内存中的存储格式直接写入磁盘。
    本质:存储的是计算机可直接解析的二进制流,数据结构与内存布局一致。

二、关键特征对比

对比维度文本文件二进制文件
存储内容字符编码值(如 UTF-8 字节流)原始二进制数据(如整数、浮点数、结构体的二进制形式)
可读性人类可直接阅读,用记事本、VS Code 等文本编辑器打开无乱码(编码匹配时)人类不可直接阅读,打开后显示为乱码,需专用程序解析
编辑工具通用文本编辑器(记事本、Sublime)专用软件(如图片编辑器、反编译器、数据库工具)
编码依赖强依赖编码格式,编码不匹配会导致乱码(如 GBK 文件用 UTF-8 打开)无编码依赖,数据格式由程序约定(如自定义协议、序列化规则)
存储效率较低,相同数据占用空间更大(如整数100000存为 6 个字符,占 6 字节)较高,数据占用空间与内存一致(如 4 字节 int 类型存100000仅占 4 字节)
数据完整性仅能存储字符序列,无法直接存储复杂数据结构(如 C++ 结构体、Qt 类对象)可直接存储复杂数据结构,保留数据的类型和内存布局

三、典型示例

  1. 文本文件常见格式

    • 纯文本:.txt
    • 源代码:.c.cpp.h.java
    • 配置文件:.ini.xml.json
    • 脚本文件:.sh.py
  2. 二进制文件常见格式

    • 可执行程序:.exe.dll.so
    • 多媒体文件:.jpg.mp4.mp3
    • 数据库文件:.db.mdf
    • 压缩文件:.zip.rar
    • 编译产物:.obj.o

四、C++/Qt 开发中的读写差异

作为 C++/Qt 开发者,两者的读写方式差异是核心关注点:

  1. 文本文件读写

    • C++ 标准库:使用ofstream/ifstream,默认以文本模式打开,会自动处理换行符转换(Windows 下\r\n↔ Linux 下\n)。
    ofstreamfout("test.txt");fout<<"Hello Text File"<<endl;// endl 会插入换行符并刷新缓冲区
    • Qt 框架:使用QTextStream,支持指定编码(如 UTF-8),避免乱码。
    QFilefile("test.txt");file.open(QIODevice::WriteOnly|QIODevice::Text);QTextStreamout(&file);out.setCodec("UTF-8");out<<"你好 文本文件";
  2. 二进制文件读写

    • C++ 标准库:必须指定ios::binary模式,禁止换行符转换,保证数据原样读写。常用于结构体、数组的序列化。
    structData{intid;doublevalue;};Data d{1,3.14};ofstreamfout("test.bin",ios::binary);fout.write((char*)&d,sizeof(Data));// 直接写入内存二进制数据
    • Qt 框架:使用QDataStream,支持 Qt 内置类型(如QStringQByteArray)和自定义类型的序列化,可跨平台传输。
    QFilefile("test.bin");file.open(QIODevice::WriteOnly|QIODevice::Binary);QDataStreamout(&file);out<<1<<3.14<<QString("Binary Data");

五、核心关联

  • 文本文件本质上也是一种二进制文件:因为字符的编码值最终是以二进制形式存储在磁盘上,只是约定了编码规则用于解析。
  • 两者可互相转换:比如将二进制数据序列化为 JSON 文本文件(可读性提升),或把 JSON 文本反序列化为二进制结构(存储效率提升)。

六、选型建议

  • 文本文件:需要人类阅读/编辑、跨平台兼容、数据结构简单(如配置、日志、源代码)。
  • 二进制文件:追求存储效率、需存储复杂数据结构、数据无需人工干预(如程序、多媒体、数据库)。

我可以帮你整理一份C++/Qt 文本与二进制文件读写的完整对比代码示例,包含自定义结构体序列化和编码处理的细节,需要吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1161467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Glyph视觉推理部署教程:4090D单卡一键启动实战指南

Glyph视觉推理部署教程&#xff1a;4090D单卡一键启动实战指南 1. 引言 1.1 Glyph-视觉推理 在大模型处理长文本上下文的场景中&#xff0c;传统基于Token的上下文扩展方式面临计算开销大、显存占用高、推理延迟显著等问题。为突破这一瓶颈&#xff0c;智谱AI推出了创新性的…

学术论文实体提取怎么做?Qwen3-0.6B给出答案

学术论文实体提取怎么做&#xff1f;Qwen3-0.6B给出答案 1. 引言&#xff1a;学术论文实体提取的挑战与技术演进 在科研信息化和知识图谱构建日益重要的今天&#xff0c;从海量学术文献中自动提取结构化信息已成为自然语言处理的关键任务。传统的信息抽取方法依赖于规则模板或…

arm64平台移植amd64应用:核心要点解析

arm64平台移植amd64应用&#xff1a;从原理到实战的完整路径你有没有遇到过这样的场景&#xff1f;团队刚采购了一批搭载苹果M系列芯片的新MacBook&#xff0c;或是准备将服务部署到AWS Graviton实例上&#xff0c;结果一运行才发现——“这个程序不支持当前架构”。屏幕上弹出…

中文语音合成新选择|Voice Sculptor集成LLaSA与CosyVoice2,开箱即用

中文语音合成新选择&#xff5c;Voice Sculptor集成LLaSA与CosyVoice2&#xff0c;开箱即用 1. 引言&#xff1a;中文语音合成的技术演进与新范式 近年来&#xff0c;随着深度学习在语音合成&#xff08;Text-to-Speech, TTS&#xff09;领域的持续突破&#xff0c;传统基于规…

FSMN VAD国产化适配:信创环境下部署可行性初步探索

FSMN VAD国产化适配&#xff1a;信创环境下部署可行性初步探索 1. 背景与目标 随着国家对信息技术应用创新&#xff08;信创&#xff09;的持续推进&#xff0c;关键核心技术的自主可控成为各行业数字化转型的重要方向。语音识别、语音活动检测&#xff08;VAD&#xff09;等…

Z-Image-Turbo应用场景:AI设计辅助工作流搭建

Z-Image-Turbo应用场景&#xff1a;AI设计辅助工作流搭建 1. 引言&#xff1a;AI设计辅助的现实需求与Z-Image-Turbo的价值定位 在现代创意设计领域&#xff0c;从品牌视觉到产品原型&#xff0c;再到数字内容生产&#xff0c;设计师面临日益增长的效率压力。传统设计流程依赖…

Qwen3-0.6B行业应用:教育领域智能答疑机器人部署案例

Qwen3-0.6B行业应用&#xff1a;教育领域智能答疑机器人部署案例 1. 背景与需求分析 随着人工智能技术在教育领域的深入渗透&#xff0c;智能化教学辅助系统正逐步成为提升教学效率和学习体验的重要工具。尤其是在在线教育、自主学习和课后辅导等场景中&#xff0c;学生对即时…

没显卡怎么跑Python3.9?云端GPU 1小时1块,小白5分钟搞定

没显卡怎么跑Python3.9&#xff1f;云端GPU 1小时1块&#xff0c;小白5分钟搞定 你是不是也遇到过这种情况&#xff1a;周末想学点新东西&#xff0c;比如用 Python3.9 做个 AI 小项目&#xff0c;结果发现自己的 MacBook 跑不动&#xff1f;教程里动不动就说“需要 NVIDIA 显…

【字符编码】记事本测试乱码思路

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录一、 为什么你的操作没有出现乱码&#xff1f;二、 能稳定复现乱码的测试思路方案 1&#xff1a;使用 **GBK 不支持的字符**&#xff08;最简单&#xff09;方案 2&a…

深度解析:GEA架构——生成与进化技术的融合

在当今数字化转型的浪潮中&#xff0c;企业面临着前所未有的挑战和机遇。为了在激烈的市场竞争中立于不败之地&#xff0c;企业需要借助先进的技术手段来提升自身的竞争力。GEA架构&#xff08;Generative and Evolutionary Architecture&#xff09;作为一种新兴的技术架构&am…

Qwen3-4B-Instruct-2507实战指南

Qwen3-4B-Instruct-2507实战指南 1. UI-TARS-desktop简介 1.1 Agent TARS 核心定位与多模态能力 Agent TARS 是一个开源的多模态 AI Agent 框架&#xff0c;致力于通过融合视觉理解&#xff08;Vision&#xff09;、图形用户界面操作&#xff08;GUI Agent&#xff09;以及现…

PDF-Extract-Kit跨语言解析:云端支持20种语言,一键切换

PDF-Extract-Kit跨语言解析&#xff1a;云端支持20种语言&#xff0c;一键切换 在跨境电商日益全球化的今天&#xff0c;商家每天都要处理来自不同国家的商品说明书、技术文档和合规文件。这些文档往往格式复杂、语言多样——德文的电器说明书、日文的化妆品成分表、法文的食品…

Windows 7还能用!VxKex实现Edge浏览器及现代应用兼容方案

作为后端开发工程师或长期使用旧系统的运维人员&#xff0c;你是否常被“软件启动报dll错误”“Win7无法运行新版应用”“老旧系统生态支持弱”等问题影响效率&#xff1f;今天分享的这款技术工具&#xff0c;能针对性解决这些实操难题。 【VxKex】「适配环境&#xff1a;Wind…

2026 AI语音落地实战:开源ASR模型+弹性GPU部署趋势详解

2026 AI语音落地实战&#xff1a;开源ASR模型弹性GPU部署趋势详解 1. 引言&#xff1a;中文语音识别的工程化落地挑战 随着大模型与智能硬件的深度融合&#xff0c;语音交互正成为人机沟通的核心入口。在客服、会议记录、教育转写等场景中&#xff0c;高精度、低延迟的自动语…

通义千问2.5编程辅助:日常开发效率提升

通义千问2.5编程辅助&#xff1a;日常开发效率提升 1. 引言 1.1 技术背景与应用场景 在当前快速迭代的软件开发环境中&#xff0c;开发者对高效、智能的编程辅助工具需求日益增长。传统的代码补全工具&#xff08;如 IntelliSense&#xff09;虽然能提供基础语法提示&#x…

工地安全姿势监控:7×24小时AI巡检,成本比人工低80%

工地安全姿势监控&#xff1a;724小时AI巡检&#xff0c;成本比人工低80% 在建筑工地&#xff0c;尤其是高层施工项目中&#xff0c;高空作业是常态。但随之而来的安全风险也极高——工人是否佩戴安全带、是否站在防护栏外、是否有违规攀爬行为&#xff0c;这些都需要实时监控…

SGLang在金融报告生成中的应用,效率翻倍

SGLang在金融报告生成中的应用&#xff0c;效率翻倍 1. 引言&#xff1a;金融报告生成的挑战与SGLang的机遇 在金融行业&#xff0c;定期生成结构化、高准确性的分析报告是投研、风控和合规等核心业务的重要支撑。传统流程依赖人工整理数据、撰写摘要并校验格式&#xff0c;耗…

自走清淤设备,亲测效果分享

自走清淤设备亲测效果分享&#xff1a;技术革新如何重塑水下清淤作业在水下清淤领域&#xff0c;传统人工作业方式因其高风险、低效率的弊端&#xff0c;正逐渐被以“自走清淤设备”为代表的智能化解决方案所取代。这类设备&#xff0c;尤其是先进的【清淤机器人】&#xff0c;…

Wan2.2-I2V-A14B冷启动问题:首次加载模型的耗时优化

Wan2.2-I2V-A14B冷启动问题&#xff1a;首次加载模型的耗时优化 1. 背景与挑战 Wan2.2是由通义万相开源的高效文本到视频生成模型&#xff0c;拥有50亿参数&#xff0c;属于轻量级视频生成架构&#xff0c;专为快速内容创作场景设计。该模型支持480P分辨率视频生成&#xff0…

亲测煤矿专用井下清淤设备:效率提升超预期

亲测煤矿专用井下清淤设备&#xff1a;效率提升超预期——从技术突破到安全升级的行业实践一、煤矿井下清淤的行业痛点与传统困境煤矿井下清淤是保障矿井排水系统通畅、避免巷道积水坍塌的关键环节&#xff0c;但长期以来面临多重挑战&#xff1a;密闭空间内瓦斯等有毒气体积聚…