网络传输-文本文件和二进制文件的区别
1. 文本文件和二进制文件的定义
# 计算机在物理内存上面存放的都是二进制,所以文本文件和二进制文件的主要区别是在逻辑上的而不是物理上的。而从文件的编码方式来看,文件可以分为文本文件和二进制文件。文本文件是基于字符编码的文件,常见的有ASCII、Unicode等,二进制文件是基于值编码的文件,可以看成是变长编码,你可以根据自己的需要,决定多少个比特代表一个值。 # 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 # (1)ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为: ASC码: 00110101 00110110 00110111 00111000 ↓ ↓ ↓ ↓ 十进制码: 5 6 7 8 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。 # (2)二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。 输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。
2. 文本文件和二进制文件的存储
# 2.1 存储的方式不同 # 二进制文件就是把内存中的数据按其在内存中存储的形式原样输出到磁盘中存放,即存放的是数据的原形式。 # 文本文件是把数据的终端形式的二进制数据输出到磁盘上存放,即存放的是数据的终端形式 # 2.2在实际存储中最好是将数据分成字符数据和非字符数据两类: # (1)如果存储的是字符数据,无论采用文本文件还是二进制文件都是没有任何区别的,所以讨论使用文本文件还是二进制文件是没有意义的。 # (2)如果存储的是非字符数据,又要看我们使用的情况来决定: # a:如果是需要频繁的保存和访问数据,那么应该采取二进制文件进行存放,这样可以节省存储空间和转换时间。 # b:如果需要频繁的向终端显示数据或从终端读入数据,那么应该采用文本文件进行存放,这样可以节省转换时间。
3. 文本文件的打开方式和二进制文件打开方式的区别
# (1)文本模式中回车被当成一个字符'\n',在文件中如果读到0x1B,文本模式会认为这是文件结束符,会按照一定方式对数据做相应的转换。 # (2)二进制模式中'\n'会被认为是两个字符0x0D,0x0A;在读到0x1B时,二进制模式不会对文件进行处理。
2.只读/写模式的r/w和rb/wb
# (1)r:读取到的是文本数据(字符的编码),使用 open() 打开文件时,默认采用 GBK 编码。但当要打开的文件不是 GBK 编码格式时,可以在使用 open() 函数时,手动指定打开文件的编码格式,例如:file = open("a.txt",encoding="utf-8") # (2)rb: 读取到的是二进制数据(字符在硬盘中存储的二进制),不需要指定编码.