美文网首页工作生活
如何区分二进制文件和文本文件

如何区分二进制文件和文本文件

作者: elef | 来源:发表于2019-07-01 17:43 被阅读0次

    所有的文件都是二进制文件,其实所有的文件也都是字节文件。因为字节也基本是数据的最小单位了(比特当然更小,但是比特是计算机处理数据时的单位,字节是最小数据块的单位)。

    • 文本文件
      “文本文件”是一种特殊的字节文件,每个数据块就是一个字节。拿ASCII编码的文件举例, 其中每个字符占 8 位(正好是一个字节),那么在读取此文件的时候程序会 8 位一读,也就是 1 个字节(字符)一读。读完 8 位再读下 8 位,直达文件末尾或者手动结束。“流”这个概念就是这么来的。每次读入一个字符就可以称为字符输入流,但本质上是一个比特(位)流。
    • 二进制文件
      而一般的字节文件中,数据块可以是任何数据类型,可以是 16 位的 short,32 位的 int,也可以是 32 位的 float,等等类型,一般叫“二进制文件”。读此类文件的时候必须要对应好,该是 short 的地方就读入 2 个字节,该是 int 的地方就该读入 4 个字节,一旦错了所有后面的数据就可能都读错了。这个“流”你可以随意称呼,可以叫“数据流”,因为各种类型的数据都有,只能统称为“数据”,但本质上就是二进制的比特流。

    最传统的文本文件就是只包括 ASCII 可显示字符,即 0x20-0x7E。只可能在二进制文件中出现的 0x00。只有文件包含'\x00'肯定不是纯文本,所以Git 就是判断文件前 8000 字节是否含有"\x00"来区分二进制文件和文本文件。

    • 关于文本编码
      记事本打开只要不是乱码的必然是文本文件,因为它显示的是良好的文本,而记事本打开是乱码的不一定就不是文本文件,可能是编码格式的原因。我们常说的 UTF-8,GBK 之类的是文本编码,是将人可读的文本,按照特定的编码表转成二进制序列的一种方式,转成二进制序列之后就可以进行存储了。在读取的时候再按照原来的方式还原,就可以得到原始文本了。

    相关文章

      网友评论

        本文标题:如何区分二进制文件和文本文件

        本文链接:https://www.haomeiwen.com/subject/oksncctx.html