webstorm 打开为二进制_文本文件和二进制文件究竟有啥区别

看似问题简单,好多人搞不懂真正的区别,下面我们从底层的角度给大家分析一下

从C语言的角度来看,所有的文件都可简单的分为两类:一类是文本文件,另外一类是二进制文件。

1、文本文件:

所谓的文本文件,就是按照字符的编码规则(比如ASCII),1:1的根据你敲的字符形成的机器码文件。后缀习惯是以.txt结尾。一个典型的文本编辑器就是大家熟悉的记事本程序(notepad.exe)。

假设我们在记事本程序里面写入了如下的“ABC回车123回车abc”,并且保存为文件名为a.txt文件。如下图所示

f222de033ccd15d6c1d6e9d9661fb132.png

a.txt

我们的问题是,在保存后,计算机究竟保存了什么样的信息?

我们用一个能够查看底层二进制代码的程序打开后,可以看到如下信息

4dac2bb60c1e9543c211dd67bc7871a9.png

a.txt底层二进制代码

41 42 43 0D 0A 31 32 33 0D 0A 61 62 63 0D 0A(十六进制)

根据ANSI ASII规范表

9ab652045675155d27689f17379482a7.png

很明显:41->A ,42->B,43->C,换一行的回车,是由两个控制符 0D(CR)和0A(LF)决定的。其他的字符依次类推。

可见一个标准的ASCII文本文件,就是按照ASCII表的编码规则来进行1:1转换的。当然如果你是按照unicode编码,所有的字符按照两个字节代表一个字符的方式进行编码。在解析Unicode编码的文本文件时,就要按照两个字节为一个字符的方式进行二进制到文本的转换,这样才能正确解析。

有人可能要问,如果一个人用word保存的这些字符,是不是文本文件呢?答案是,不是。因为word文件在保存时,添加了很多的特定的格式化信息。我们以保存一个字符A为例,看看word 2010中的A在保存后,底层究竟是什么样的。下图截取了部分

5ffd4c18f9e9f793caf8e8274545117c.png

word文件底层代码截图

这只是一部分,可见又一大堆只有微软才了解的代码。

2、二进制文件

二进制文件是可以认为是所有非文本文件都称之为二进制文件。

要打开二进制文件,需要有形成这类文件的程序的内置的解析器,才能解读。这也解释了为什么不同的文件比如pdf,docx等文件,在编程的时候,必须要有相应的文档解析类函数来完成的原因了。

当然你完全可以用二进制方式打开任何一个文本文件,因为底层上就是那些代码,你只需要读取每一个字节,查找转化成相应字符予以显示就可以了,因为是你知道ASCII表的规则。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值