In meinem Projekt muss ich in sequenzielle unsigned Ints Binärdatei schreiben, und es ist wichtig, dass jede Zahl genau 4 Bytes dauert. Aber wenn ich die Binärdatei mit einem Hex-Editor öffne, sehe ich dieses seltsame Geschehen: die Zahlen werden nur bis zu Nummer 9 korrekt geschrieben; vor Nummer 10 wird er ein weiteres extra Byte hinzufügen und '13' schreiben (und schon mit meiner Datei versaut). Und seltsame Dinge passieren weiterhin - ab Nummer 30 werden verschiedene Zeichen geschrieben, eins neben jeder Zahl. warum ist das? wie man es beheben kann, zumindest das Größenproblem? Hier ist mein einfacher Beispielcode:kann nicht korrekt große unsigned Ints in Binärdatei schreiben - C++
int main()
{
string filename;
cin >> filename;
fstream mystream;
mystream.open(filename, ios::out);
if (mystream)
for (unsigned int i = 0; i < 3200; i++)
mystream.write((char*)&i, sizeof(unsigned int));
mystream.close();
return 0;
}
und angebracht ist, um ein Bild von dem, was ich in der Datei sehen: file capture on hex editor
dank
Das Definieren von 'void main()' in globalen Namespae ist im Standard C++ unzulässig. Sie sollten den Standard 'int main()' verwenden. – MikeCAT
rechts. Ich werde es korrigieren; –