`

比基础更基础的问题——关于二进制文件

 
阅读更多
        二进制文件,这个再基础不过的名词,正因为它的无处不在,或许没有人会关注它背后隐含的内容。其实我也一样,在写下这些文字之前,我也是认为二进制文件就像空气一样,平常得让人完全忽略了。
        很偶然的,今天在写代码的时候使用了fopen函数:
                 FILE * fopen (const char * filename, const char * mode)
大家可以看到第二个参数是mode,而这个参数定义了文件打开的方式,w、a等都可以做为函数的实参。除此之外,还有两个值:tb。这两个值定义了文件是按照文本(text)还是二进制(binary)方式开发。正是这个两个值引起了我对二进制文件的兴趣,因为它们让我想到了很多问题。
        首先,出现在脑海的第一个问题是:文本文件和二进制文件有什么区别呢?我想这个问题并不是每个程序员能够马上回答上来的,至少我是不行了。查阅了资料之后,发现答案就在自己的知识范围之内的:将文件看作是由一个一个字节(byte) 组成的,那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是两者的区别;
        接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同。如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII码,而以按照二进制方式打开的话,则不会进行任何的translate;
        最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。
分享到:
评论

相关推荐

    Go二进制文件逆向分析从基础到进阶——MetaInfo、函数符号和源码文件路径列表 .pdf

    Go二进制文件逆向分析从基础到进阶——MetaInfo、函数符号和源码文件路径列表 安全研究 安全对抗 威胁情报 信息安全 安全架构

    深度学习框架(TensorFlow)基础教程——第11章:二进制文件读取

    深度学习框架(TensorFlow)基础教程(全套PPT,代码以及素材)

    计算机基础关键字汇总——计算机资料文档.docx

    第10页,共10页 第10页,共10页 计算机基础关键字汇总——计算机资料文档全文共10页,当前为第1页。计算机基础关键字汇总——计算机资料文档全文共10页,当前为第1页。第一章 计算机基础知识 计算机基础关键字汇总...

    计算机应用基础练习题(1).doc

    计算机应用基础练习题 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 《计算机应用基础》 1. 填空题 1、...

    计算机应用基础第四次作业.doc

    计算机应用基础第四次作业 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 第四次作业 一、单项选择题(只有...

    Bson:Bson是一个Java库,可用于将Java对象转换为二进制数据以进行存储传输使用更少的空间

    替代Json的数据格式通过二进制的方式节省空间,相比Json,不保存key,只保存value。value根据实际的类型转换为二进制保存。二级制保存文件本身包含格式信息,但只包含层级和基本类型,不包含属性名使用方式Bson bson...

    浮点数精度问题解答——浮点数

    目前支持二进制浮点数的硬件和软件文档中,几乎都声称其浮点数实现符合IEEE 754标准。那么,什么是IEEE 754标准? 最权威的解释是IEEE754标准本身ANSI/IEEE Std 754-1985《IEEE Standard for Binary Floating-Point...

    计算机应用基础——判断题.docx

    计算机基础作业五 1. ( T )网络适配器是将计算机与网络连接起来的器件。 2. ( F )个人计算机属于大型计算机。 3. ( F )硬盘装在机箱内面,属于内存储器。... 16.(T)二进制数101110-01011=100011。 17.(T )

    数据结构课程设计——基于链表与哈希表的通讯录系统设计

    《数据结构与算法分析》课程设计教学任务书 通讯录系统设计: 设计要求 ...contacts.dat —— 数据存储文件(二进制形式) Contacts.cbp ——CodeBlocks工程文件,如有CodeBlocks,可直接打开工程。

    C#全能速查宝典

    《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...

    组成原理课程设计代码——完整版

    〈1〉同步二进制计数器 〈2〉多位二进制加法器 下载到实验箱上,在实验箱上验证。 必做 设计 专业基础 计算机组成原理实验箱30台 P4计算机60台 硬件基础实验室 3 多路开关,逻辑运算部件,移位器设计 在本次实验...

    电子技术基础 数字电路部分

    电子技术基础 数字电路部分 (康华光版)课件 供学习者学习及复习的好东西 好不容易找到的 大家分享一下 另附 ——康华光版习题解答

    《计算机应用基础(本科)》21春电子科技大在线作业2.docx

    IPv4地址有()位二进制数组成。 A.16 B.32 C.64 《计算机应用基础(本科)》21春电子科技大在线作业2全文共15页,当前为第4页。D.128 答:———— 13. 计算机网络按照使用范围分为____和____。 A.广域网 局域网 B....

    西电计科大三上计算机组织与体系结构课程设计

    文件结构: ——实验资料 ——实验报告 ——其他文件 ...掌握微程序的设计方法,学会编写二进制微指令代码表。 6.通过熟悉较完整的计算机的设计,全面了解并掌握微程序控制方式计算机的设计方法。

    PPC和MIPS指令集下二进制代码中函数参数个数的识别方法

    为了评估Findargs的识别效果,选取大型的二进制文件进行了测试,并与radare2进行了对比。实验结果表明,Findargs具有更高的准确率。对于PPC指令集,其准确率达到90.3%;对于MIPS指令集,其准确率为86%。

    JVM执行子系统-JVM进阶

    语言绑定,它只与“Class 文件”这种特定的二进制文件格式所关联,Class 文件中包含了 Java 虚拟机指令集和符号表以及若干其他辅助信息。 常量池中常量的数量是不固定的,所以在常量池的入口需要放置一项 u2 类型的...

    嵌入式设计及linux驱动开发指南——基于ARM9处理器.pdf

    6.5.10 用户空间使用的二进制文件格式的选项 6.5.11 和电源管理相关的选项 6.5.12 和网络协议相关的选项 6.5.13 和设备驱动程序相关的选项 6.5.14 和文件系统相关的选项 6.5.15 和程序性能分析相关的选项 ...

    程序设计基础(C) 视频.txt

    4.6编程实例——二进制与十进制的转换94 本章小结95 习题95 第5章程序结构100 5.1全局变量与局部变量100 5.1.1全局变量100 5.1.2局部变量101 5.2静态变量102 5.3存储类型103 5.4作用域与生存期104 5.4.1作用域104 ...

    (完整版)Python基础学习笔记.docx

    1.2程序设计语言 1.2.1程序设计语言概述 机器语言:直接使用二进制代码表达指令,可被计算机硬件直接识别和执行。不同计算机结构的机器指令不同。 汇编语言:使用助记符对应机器语言中的指令,可直接操作计算机硬件...

    计算机应用基础专科20.9作业参考答案.docx

    (1)十进制整数转换为二进制整数(除基取余法) 十进制整数转换为二进制整数的规则是:除以基数(2)取余数,先得到的余数为低位,后得到的余数为高位。 具体的做法是:用2连续去除十进制整数,直到商等于0为止,...

Global site tag (gtag.js) - Google Analytics