文本文件和二进制文件比较

时间:2023-02-11 09:21:48

广义上的二进制文件包括文本文件,这里讨论的是狭义上的二进制文件与文本文件的比较:

  1. 能存储的数据类型不同

    • 文本文件只能存储char型字符变量。

    • 二进制文件可以存储char/int/short/long/float/……各种变量值。

  2. 每条数据的长度

    • 文本文件每条数据通常是固定长度的。以ASCII为例,每条数据(每个字符)都是1个字节,而文本文件编码基于字符定长,因此译码容易。

    • 二进制文件每条数据不固定。如short占两个字节,int占四个字节,float占8个字节……二进制文件只是储存数据,并不写明数据类型。因此,对一个二进制文件,我们不能准确地知道它的含义,我们需要他的数据储存方式的说明。这个说明告诉我们第几个字节到第几个字节是什么类型的数据,储存的数据是什么含义。否则的话,我们只能猜测,或者无能为力。

  3. 读取的软件不同

    • 文本文件编辑器就可以读写。比如记事本、NotePad++、Vim等。

    • 二进制文件需要特别的解码器。比如bmp文件需要图像查看器,rmvb需要播放器……

  4. 操作系统对换行符(‘\n’)的处理不同(不重要)

    • 文本文件,操作系统会对’\n’进行一些隐式变换,因此文本文件直接跨平台使用会出问题。在Windows下,写入’\n’时,操作系统会隐式的将’\n’转换为”\r\n”,再写入到文件中;读的时候,会把“\r\n”隐式转化为’\n’,再读到变量中。在Linux下,写入’\n’时,操作系统不做隐式变换。

    • 二进制文件,操作系统不会对’\n’进行隐式变换,很多二进制文件(如电影、图片等)可以跨平台使用。

  5. 文本文件和二进制文件比较

    文本文件的好处:

    • 因为文本文件与二进制文件的区别仅仅是编码上不同,所以他们的优缺点就是编码的优缺点。一般认为,文本文件编码基于字符定长,译码容易;二进制文件编码是变长的,所以它灵活,存储利用率要高些,译码难一些(不同的二进制文件格式,有不同的译码方式)。

    二进制文件的好处:

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

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

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

    • 在windows下,文本文件不一定是ASCII来存贮的,因为ASCII码只能表示128的标识,打开一个txt文档,然后另存为,有个选项是编码,可以选择存贮格式,一般来说UTF-8编码格式兼容性要好一些。而二进制用的计算机原始语言,不存贮兼容性

更多