`

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

 
阅读更多
        二进制文件,这个再基础不过的名词,正因为它的无处不在,或许没有人会关注它背后隐含的内容。其实我也一样,在写下这些文字之前,我也是认为二进制文件就像空气一样,平常得让人完全忽略了。
        很偶然的,今天在写代码的时候使用了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),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。
分享到:
评论

相关推荐

    Kubernetes1.6集群部署完全指南——二进制文件部署开启TLS基于CentOS7

    ### Kubernetes 1.6 集群部署完全指南:二进制文件部署开启 TLS 基于 CentOS 7 #### 概述 本指南旨在详细介绍如何在 CentOS 7 系统上通过二进制文件部署的方式搭建一个启用 TLS 的 Kubernetes 1.6 集群。TLS...

    【C语言】二进制文件操作问题

    ### 二进制文件操作与图片合并方法 #### 一、二进制文件的基本概念 在计算机科学领域,二进制文件是指存储在磁盘上的一系列未经解释的二...希望以上内容能帮助您更好地理解和掌握二进制文件及图像处理的相关知识。

    VC 文件二进制代码阅读器_VC文件二进制代码阅读器_

    在IT领域,尤其是在软件开发和系统分析中,深入理解文件的二进制代码是至关重要的。...而"VC 文件二进制代码阅读器"则为我们提供了一个实用且功能丰富的平台,让我们能够更好地洞察计算机世界的基础——二进制代码。

    二进制数和十进制数相互转换 汇编课程设计

    本次课程设计的主题是“二进制数和十进制数相互转换”,这是一个基础但至关重要的概念,尤其对于理解计算机内部工作原理来说。 二进制数系统(Binary System)是计算机科学的基础,它只使用两个符号:0和1。所有...

    二进制与十六进制转换

    通过对二进制和十六进制基础知识的学习,我们不仅能够更好地理解计算机内部数据的表示方式,还能掌握如何在这两种进制之间进行高效的转换。这对于深入学习计算机科学的核心概念、提高编程能力都具有重要的意义。无论...

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

    《Go二进制文件逆向分析从基础到进阶——MetaInfo、函数符号和源码文件路径列表》 在安全领域,尤其是渗透测试、金融安全和法律法规相关的安全开发中,理解Go二进制文件的内部构造是至关重要的。本文将深入探讨Go二...

    vhdl入门程序——十进制加法

    如果某位的和超过二进制的1(即1+1),则需要向高位进位,并将该位的结果设置为0(因为二进制加法1+1=10,只保留最低位的0)。这就是所谓的二进制加法的基本规则。 波形仿真文件是VHDL设计中的一个重要组成部分。它...

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

    二进制文件通常用于存储大量的数值数据,如图像、音频或模型权重,因为它们比文本文件更紧凑,读取速度更快。在TensorFlow中,直接处理二进制文件可以提高程序效率,特别是在大数据集的预处理和模型训练阶段。 首先...

    FPGA课程设计——二进制转BCD码.zip

    本课程设计的主题是“二进制转BCD码”,这涉及到数字信号处理和数字逻辑的基础知识。下面将详细阐述这个主题以及相关的FPGA设计流程。 BCD码(Binary-Coded Decimal),即二进制编码的十进制数,是一种用二进制表示...

    二进制转换小工具

    二进制系统是计算机内部处理和存储信息的基础,它使用“0”和“1”的组合来表示所有的数据。 二进制转换的基本概念: 二进制(Binary)是一种数值系统,只有两个数字:0和1。在计算机科学中,所有数据——无论是...

    从 EPL 二进制文件中提取表格 从易语言二进制文件中提取窗口信息.zip

    本压缩包文件所涉及的主题,便是如何从两种特定类型的二进制文件——EPL文件和易语言编写的二进制文件中,提取表格和窗口信息。 EPL(Easy Programming Language)是一种简单易用的编程语言,通常用于快速开发各种...

    数据二进制转换器转换器

    首先,我们要知道二进制系统是基于两个符号——0和1的数字系统。每个二进制位(bit)代表一个可能的状态,0或1。八位二进制位组成一个字节(byte),这是计算机存储和处理数据的基本单位。例如,数字10在十进制系统...

    C#文件分割和整合 文件分割

    本篇文章将深入探讨如何利用C#实现文件的分割和整合,以及涉及的核心概念——文件流和二进制流。 首先,我们要理解“文件分割”这个概念。文件分割是指将一个大文件分成若干个较小的文件,每个部分都有固定或可变的...

    cisco binary game 二进制游戏 8421码练习游戏

    《Cisco Binary Game——二进制游戏8421码练习》 在信息技术领域,二进制(Binary)是计算机语言的基础,所有数据在计算机内部都以0和1的形式表示。对于IT专业人士而言,理解和掌握二进制至关重要。而8421码,也...

    汇编语言作业——进制转换器

    本项目标题为“汇编语言作业——进制转换器”,显然,这是一个使用WIN32汇编语言编写的程序,它的主要功能是实现不同进制之间的转换,如二进制、八进制、十进制和十六进制之间的转换。对于初学者来说,这样的程序...

    FPGA课程设计——十进制计数器.zip

    1. **定义计数器状态**:在VHDL中,我们首先定义计数器的位宽,比如4位二进制来表示0-9的十进制数。然后,通过状态机(Finite State Machine, FSM)描述计数器的计数过程,包括初始状态、计数状态和结束状态。 2. *...

    c/c++代码样例::二进制代码查看器 activeX控件开发

    在"另一个例子是用vc开发一个activeX控件"的描述中,我们可以假设这个控件可能是一个用于查看二进制文件的工具,它可以集成到其他支持ActiveX的应用程序中,比如网页或者桌面应用,用户可以通过该控件直接查看文件的...

    计算机与二进制全解PPT学习教案.pptx

    在探索计算机科学的深处,我们会遇到一个基础而又核心的概念——二进制。它不仅是计算机科学的基石之一,也是我们理解现代计算机工作原理的关键。要深入学习计算机,掌握二进制知识显得至关重要。本文将通过对二进制...

    python 3 实现NIST二进制序列随机测试

    Python 3实现NIST二进制序列随机测试 ...总之,Python 3实现的NIST二进制序列随机测试是一个实用的工具,它降低了对NIST标准进行评估的门槛,使得更多的人能够参与进来,保障了信息安全领域的基础——随机性的质量。

Global site tag (gtag.js) - Google Analytics