文本文件和二进制文件的区别
1.两者在物理上相同,在逻辑上是不同的
-
计算机在存储物理上都是二进制的.所以二者在物理上相同
-
在逻辑上,二者主要差别在于编码不同.
-
文本文件是基于字符编码的文件,一般都是定长编码的(ASCII),也有非定长的(UTF-8)。
-
二进制文件是基于值编码的文件,可看成是变长编码的,因为是值编码,多少个比特代表一个值,完全由你决定。如BMP文件
-
其编码是基于值的(不定长的,2、4、8字节长的值都 有),所以BMP是二进制文
2.文本文件与二进制文件的存取不同
-
假如你以ASCII编码形式,将.bin的内容解释成文本,最终你也看到.bin文件中存储的是字母A。如果你直接以二进制解释1.bin文件,就看到的是十进制的65数字。
-
如果要存储二进制文件,那么就直接将数据(10000001)存入硬盘或者是内存当中,数据不需要任何转化
-
如果要存储文本文件,要先编码,然后再存入。(数据需要转化)
-
文本文件要编码存入,要解码读出。而二进制文件就是直接的读写
3.文本文件与二进制文件的优缺点
-
文本文件可读性较好,存储要花费转换时间
二进制文件可读性差,存储不用花费转化时间,直接读写
4.向文件写入数据时的注意点
-
按照文本方式向文件中写入数据时,遇到“换行”符,则会转换为“回车-换行”符,存储,即当存放10(换行符)时,在文件中会存放 13 (回车)和10(换行),同时存储的文件就多了一个字节了
-
而读取文本文件的时候,遇到13和10,也会合成ASCII10即换行符读取,
而当按照二进制文件模式向文件中写入数据时,就会按照数据在内存中的存储形式原样输出到文件中,即存放10时,不会转换 为13和10, 所以如果以二进制方式向文件写入10时,当以文本方式(例如记事本)打开文件时,看到的会是一个小黑快,而 不是换行符,因为在文本文件中,只有遇到13 和 10的组合时才会转换为换行符。
-
在文本处理上,CR(Carriage Return),LF(Line Feed), CR/LF是不同操作系统上使用的换行符
是不同操作系统上使用的换行符
.
-
Dos和windows: 采用回车+换行CR/LF表示下一行.
-
UNIX/Linux : 采用换行符LF表示下一行.
-
MAC OS : 采用回车符CR表示下一行.
-
CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D; LF用符号'\n'表示, 十进制ASCII代码是10, 十六制为0x0A.