学习啦>知识大全>知识百科>百科知识>

什么是二进制文件二进制文件的储存方式

时间: 玉凤862 分享

  二进制文件格式是系统软件开发、病毒或木马源码分析以及文件压缩工作的基础。什么是二进制文件呢?下面是学习啦小编整理的什么是二进制文件,欢迎阅读。

  什么是二进制文件

  包含在 ASCII及扩展 ASCII 字符中编写的数据或程序指令的文件。计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本文件),图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。ASCII 则是可以用任何文字处理程序阅读的简单文本文件。

  二进制文件定义

  广义的二进制文件即指文件,由文件在外部设备的存放形式为二进制而得名。狭义的二进制文件即除文本文件以外的文件。文本文件是一种由很多行字符构成的计算机文件。文本文件存在于计算机系统中,通常在文本文件最后一行放置文件结束标志。文本文件的编码基于字符定长,译码相对要容易一些;二进制文件编码是变长的,灵活利用率要高,而译码要难一些,不同的二进制文件译码方式是不同的。

  从本质上来说他们之间没有什么区别,因为他们在硬盘上都有一种的存放方式--二进制,但是如果要对他们有些区分的话,那可以这样理解。每个字符由一个或多个字节组成,每个字节都是用的-128—127之间的部分数值来表示的,也就是说,-128——127之间还有一些数据没有对应任何字符的任何字节。如果一个文件中的每个字节的内容都是可以表示成字符的数据,我们就可以称这个文件为文本文件,可见,文本文件只是二进制文件中的一种特例,为了与文本文件相区别,人们又把除了文本文件以外的文件称为二进制文件,由于很难严格区分文本文件和二进制文件的概念,所以我们可以简单地认为,如果一个文件专门用于存储文本字符的数据,没有包含字符以外的其他数据,我们就称之为文本文件,除此之外的文件就是二进制文件。

  使用二进制文件的好处

  为什么要使用二进制文件。原因大概有三个:

  第一是二进制文件比较节约空间,这两者储存字符型数据时并没有差别。但是在储存数字,特别是实型数字时,二进制更节省空间,比如储存 Real*4 的数据:3.1415927,文本文件需要 9 个字节,分别储存:3 . 1 4 1 5 9 2 7 这 9 个 ASCII 值,而二进制文件只需要 4 个字节(DB 0F 49 40)

  第二个原因是,内存中参加计算的数据都是用二进制无格式储存起来的,因此,使用二进制储存到文件就更快捷。如果储存为文本文件,则需要一个转换的过程。在数据量很大的时候,两者就会有明显的速度差别了。

  第三,就是一些比较精确的数据,使用二进制储存不会造成有效位的丢失。[1]

  二进制文件的储存方式

  列举一个二进制文件如下:

  00000000h:0F 01 00 00 0F 03 00 00 12 53 21 45 58 62 35 34; .........S!EXb54

  00000010h:41 42 43 44 45 46 47 48 49 47 4B 4C 4D 4E 4F 50; ABCDEFGHIGKLMNOP

  这里列出的是在 UltraEdit(UE) 里看到的东西。其实只有红色部分是文件内容。前面的是 UE 加入的行号。后面的是 UE 尝试解释为字符型的参考。

  这个文件一共有 32 字节长。显示为两列,每列 16 个字节。实际上,这仅仅是 UE 的显示而已。真实的文件并不分行。仅仅知道这个文件的内容,如果我们没有任何说明的话,是不能看出任何有用信息的。

  下面我规定一下说明:我们认为,前 4 个字节是一个 4 字节的整型数据(0F 01 00 00 十六进制:10Fh 十进制:271)。这 4 个字节之后的 4 个字节是另一个 4 字节的整型数据(0F 03 00 00 十六进制:30Fh 十进制:783)。其后的 4 个字节(12 53 21 45 )表示一个 4 字节的实型数据:2.5811919E+3。再其后的 4 个字节(58 62 35 34)表示另一个 4 字节的实行数据:1.6892716E-7。而只后的 16 个字节(41 42 43 44 45 46 47 48 49 47 4B 4C 4D 4E 4F 50)我们认为是 16 个字节的字符串(ABCDEFGHIGKLMNOP)

  实际上,二进制文件只是储存数据,并不写明数据类型,比如上面的第 9 字节到第 16 字节(12 53 21 45 58 62 35 34),我们刚才认为是 2 个 4 字节的实型,其实也可以认为是 8 个字节的字符型( S!EXb54)。而后面的 16 个字节的字符串(ABCDEFGHIGKLMNOP),我们也可以认为是 2 个 8 字节的整型,或者 4 个 4 字节的整型,甚至 2 个 8 字节的实型,4 个 4 字节的实型,等等等等。

  因此,面对一个二进制文件,我们不能准确地知道它的含义,我们需要他的数据储存方式的说明。这个说明告诉我们第几个字节到第几个字节是什么类型的数据,储存的数据是什么含义。否则的话,我们只能猜测,或者无能为力。[1]

  如何使用语句操作二进制文件

  我们将上面的那个二进制文件保存为:TestBin.Bin 来举例。

  读取和写入二进制其实是两个很类似的操作,了解了其中之一,另一个也就不难了。

  二进制文件我们通常使用直接读取方式,Open 语句可以写为:

  引用:

  Open( 12 , File = 'TestBin.Bin' , Access = 'Direct' , Form = 'Unformatted' , RecL = 4 )

  上面的 Access 表示直接读取方式,Form 表示无格式储存。比较重要的是 RecL 。我们读取数据时,是用记录来描述单位的,每一次读入或写入是一个记录。记录的长度在 Open 时就确定下来,以后不能改变。如果需要改变,只能 Close 以后再此 Open。

  记录长度在某些编译器下表示读取的 4 字节长度的倍数,规定为 4 表示记录长度为 16 字节。有些编译器下就直接表示记录的字节数,规定为 4 则表示记录长度为 4 字节。这个问题需要参考编译器手册。在 VF 系列里,这个值是前面一个含义。可以通过设置工程属性的 Fortran,Data,Use Bytes as RECL= Unit for Unformatted Files 来改变,使之成为后一个含义。在命令行模式下,则使用 /assume:byterecl 这个编译选项。

  确定 RecL 大小是我们需要做的事情,一般来说,不适合太大,也不适合太小。还需要结合数据储存方式来考虑。太小的话,我们需要执行读写的次数就多,太大的话,我们就不方便操作小范围的数据。

  有时候我们甚至会分多次来读取数据,每一次的 RecL 都不同。对于上面的 TestBin.Bin 文件来说,它比较简单,我以 16 字节长度和 8 字节长度两种读取方式来演示,你甚至可以一次 32 个字节长度全部读完。[1]

看了什么是二进制文件的人还看了:

1.c语言中fopen的用法

2.什么是电子文件 电子文件的种类与特征

3.c语言基础知识总结

4.c语言fopen函数的用法

5.linux操作系统概述

什么是二进制文件二进制文件的储存方式

二进制文件格式是系统软件开发、病毒或木马源码分析以及文件压缩工作的基
推荐度:
点击下载文档文档为doc格式

精选文章

  • 什么是法律文书法律文书写作要求
    什么是法律文书法律文书写作要求

    法律文书是一种保障人民权利,履行义务,惩罚犯罪和渎职的法律文件。什么是法律文呢?下面是学习啦小编整理的什么是法律文书,欢迎阅读。 什么是法

  • 什么是商业规划商业规划的要点
    什么是商业规划商业规划的要点

    商业规划是针对商业项目的调研定位、规划设计、业态分布、工程条件等多方面进行综合整合、把控、细化及对接处理,使项目商业效益最大化。那么你对

  • 什么是非物质文化非物质文化发展
    什么是非物质文化非物质文化发展

    中国非物质文化遗产承载着优秀传统文化的精髓,是中国人文文化的重要组成部分,什么是非物质文化 呢?下面是学习啦小编整理的什么是非物质文化,欢

  • 什么是商业计划书商业计划书的要素
    什么是商业计划书商业计划书的要素

    商业计划书是公司、企业或项目单位为了达到招商融资和其它发展目标,根据一定的格式和内容要求而编辑整理的一个向受众全面展示公司和项目目前状况

2006777