Ich versuche eine Binärdatei mit std::ofstream::write
method zu schreiben. Ich habe herausgefunden, dass einige Zeichen nicht so geschrieben sind, wie sie sind, zum Beispiel:
schreibt Folgendes in eine Binärdatei: 0d 0a 00 00 00
Warum erscheint zusätzliches 0d
byte?
Sie müssen std::ofstream::binary
beim Öffnen angeben.
Sonst, in Windows im Textdateimodus, wird \n
( 0x0a
) in einem Programm in / von \r\n
( 0x0d 0x0a
) konvertiert, wenn die Datei geschrieben / gelesen wird.
Die Datei wird auf einem System geschrieben, das Text in binäre Übersetzung übersetzt. Der Wert 10 (0A hex) im untersten Byte von i wird als Zeilenvorschub (auch als Newline bezeichnet) interpretiert und in eine Wagenrücklauf-Zeilenvorschubsequenz (13 10 dezimal, 0D 0A hex) konvertiert.
Um dieses Problem zu lösen, ändern Sie die erste Zeile Ihres Code-Snippets wie folgt:
%Vor%Dies weist die C ++ - Laufzeitbibliothek an, die Datei als binär zu behandeln und keine Byte-Umsetzung zwischen Zeilenvorschub- und Wagenrücklauf-Zeilenfolgen durchzuführen.