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では、OSに関しては、テキストファイルとバイナリファイルの処理に違いはありません。

于 2012-12-03T03:02:35.127 に答える
0

モード修飾子翻訳モードtテキスト(翻訳済み)モードで開きます。bバイナリ(非翻訳)モードで開きます。キャリッジリターン文字と改行文字を含む変換は抑制されます。

于 2019-07-31T10:05:20.237 に答える