Ich habe einen einfachen Vektor von Ints, und ich möchte es in eine Binärdatei schreiben. Zum Beispiel:C++ - Binärdatei - Schreiben von Ints - seltsames Verhalten
#include <fstream>
#include <vector>
int main() {
std::vector<uint32_t> myVector{5, 10, 15, 20 };
// write vector to bin file
std::ofstream outfile("./binary_ints.data", std::ios_base::binary|std::ios::trunc);
std::copy(myVector.begin(), myVector.end(), std::ostreambuf_iterator<char>(outfile));
outfile.close();
return 0;
}
Dann, wenn ich die Datei "binary_ints.data" in Hex-Modus überprüfen, habe ich dieses:
00000000: 050a 0f14 0a
Das ist ok !.
jedoch Wenn myVector diese Daten hat:
std::vector<uint32_t> myVector{3231748228};
Dann gespeicherte hex ist seltsam:
00000000: 840a
84 in Hex nicht mit dem Int passen 3231748228.
Was geschieht Hier? Danke.
'std :: copy' transformiert kein Element in mehrere neue Elemente, noch' std :: ostreambuf_iterator'. – chris
Sie hätten etwas experimentieren können, um zu sehen, was passiert, wenn der 'int'-Wert> 255 ist. – PaulMcKenzie
Ich bin neugierig, woher der zusätzliche Zeilenumbruch kommt (außer dem, der tatsächlich Teil der Vektordaten ist). Das Programm sollte nicht nach den Vektordaten schreiben. –