I feel binary data don't have such things like end-of-line.
二进制文件中可以包含任何可能的字符,包括字符\n。您不希望python将二进制文件中的任何字符隐式转换为其他字符。Python不知道它正在读取二进制文件,除非您告诉它。当python读取文本文件时,它会自动将\n任何字符转换为操作系统的换行符,在Windows上是\r\n
这是所有计算机编程语言的工作方式。在
另一种思考方法是:一个文件只是一个长的字节序列(8位)。字节只是一个整数。字节可以是任意整数。如果一个字节恰好是整数10,那么这也是字符的ascii代码。\n如果文件中的字节表示二进制数据,则不希望Python读入10并将其转换为两个字节:13和10。通常当你读二进制数据时,你想读,比如说,前2个字节代表一个数字,然后4个字节代表另一个数字,等等。。显然,如果python突然将其中一个字节转换为两个字节,那将导致两个问题:1)它改变了数据;2)所有的数据边界都将混乱。在
举个例子:假设文件的第一个字节代表一只狗的体重,这个字节的值是10。下一个字节代表狗的年龄,它的值是1。如果Python将10(ascii代码)转换为两个字节:10和13,那么Python提供的数据将如下所示:
1013年1月
当你提取狗的年龄的第二个字节时,你得到的是13而不是1。在
我们经常说一个文件包含“字符”,但这显然是错误的。计算机不能存储字符,只能存储数字。所以一个文件就是一长串的数字。如果告诉python将这些数字视为表示字符的ascii代码,那么python将给您文本。在