看似问题简单,好多人搞不懂真正的区别,下面我们从底层的角度给大家分析一下
从C语言的角度来看,所有的文件都可以简单的分为两类:一类是文本文件,一类是二进制文件。
1.文本文件:
所谓文本文件,就是根据你按照字符的编码规则(比如ASCII)输入的字符,1:1的机器码文件。后缀通常以结尾。txt。典型的文本编辑器是我们熟悉的记事本程序(notepad.exe)。
假设我们在记事本程序中写下下面的“abc Enter 123 Enter ABC”,并保存为一个名为a.txt的文件,如下图所示
a.txt
我们的问题是,保存之后,电脑保存的是什么样的信息?
在我们用一个可以查看底层二进制代码的程序打开它之后,我们可以看到以下信息
A.txt底层二进制代码
1 42 43 0d0a31 32 33 0d0a61 62 63 0d0a(十六进制)
根据ANSI ASII规格表
显然:41->: A,42->;b,43->;c,新行的回车,由两个控制字符0D(CR)和0A(LF)决定。其他人物依次类推。
可以看出,一个标准的ASCII文本文件按照ASCII表的编码规则转换成1:1。当然,如果您按照unicode编码,所有字符都按照两个字节代表一个字符的方式编码。在解析Unicode编码的文本文件时,需要按照两个字节为一个字符的方式将二进制转换为文本,这样才能正确解析。
可能有人会问,如果一个人把这些字符保存在word里,是文本文件吗?答案是,不会。因为word文件在保存时会添加许多特定的格式信息。我们以保存一个字符A为例,看看word 2010中保存A后底层是什么样子的。下图捕捉到了其中的一部分。
word文件底层代码截图
这只是其中的一部分,它展示了另一堆只有微软知道的代码。
2.二进制文件
二进制文件可以被认为是所有的非文本文件被称为二进制文件。
要打开二进制文件,您需要形成这种文件的程序的内置解析器来解释它们。这也解释了为什么不同的文件,如pdf,docx等。,编程时必须有相应的文档解析功能。
当然,你可以用二进制模式打开任何文本文件,因为那些代码在底层。你只需要读取每个字节,查找并转换成相应的字符进行显示,因为你知道ASCII表的规则。
本文来自吃鸡只用平底锅投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/476000.html