4

在文本模式下写入/读取文件时,新行字符被转换为回车和换行,即 \n 到 \r\n 但在二进制模式下不会发生这种情况。

同样,ASCII 值 26 将在文本模式下写入文件末尾,但在二进制模式下不会发生这种情况。

我知道这个问题早先在 SO 中被问过,但我没有找到任何关于这种行为的理由。

我的意思是,这种行为只是为了区分文本和二进制模式,还是这种翻译有任何具体原因,并且在二进制模式的情况下不写入 ASCII 值 26。

4

3 回答 3

6

从某种意义上说,二进制模式是“原始的”:没有翻译任何内容,因为它没有这样做的基础。而在文本模式下,文件被解释为文本,因此(例如)行尾被翻译为适当的表示。

于 2012-12-03T02:58:29.140 回答
4

文本文件处理取决于操作系统。根本不处理二进制文件。Windows,用 CR+LF 替换行尾,在 Linux 和 OSX 中它是 LF。在 Linux 中,就操作系统而言,文本文件和二进制文件的处理没有区别。

于 2012-12-03T03:02:35.127 回答
0

模式修饰符 翻译模式 t 以文本(翻译)模式打开。b 以二进制(未翻译)模式打开;涉及回车和换行字符的翻译被禁止。

于 2019-07-31T10:05:20.237 回答