Das Schreiben von Binärdaten
Frage
Ich schreibe Binärdatei mit fstream und beim Öffnen der Datei binäres Flag verwendet wird.
Ich brauchte einen Text als binäres zu schreiben, die eine einfache Schreib den Trick. Das Problem ist, dass ich auch (wie gezeigt in hexadezimal) schreiben muß 0. Der Wert, wenn in binärem Notizblock geöffnet Null gezeigt, aber wenn versucht, dies der Wert zu schreiben, nicht Null es Wert von 30 in hexadezimal war.
Wie Sie schreiben spezifische Daten wie das?
Lösung
Beim Öffnen der fstream die ios::binary
Flag verwenden binäre Ausgabe zu spezifizieren. Weitere Informationen finden Sie hier .
Wie zum Schreiben 0, wenn Sie 30 in Hexadezimal sehen Sie schreiben den Charakter ‚0‘, nicht die binäre Zahl 0. Um dies zu tun mit einem fstream Sie etwas tun können, wie:
my_fstream << 0;
Beachten Sie die Binärdaten 0 keine Textdarstellung hat, so dass Sie nicht in der Lage sein, um es in Editor zu lesen, wie Sie die Zeichen zu lesen, wären in der Lage ‚0‘.
Andere Tipps
Sie wahrscheinlich nur brauchen so etwas wie dies, zu verbessern, wie Sie sehen, passen:
ofstream file("output.bin", ios::out | ios::binary);
if (file.good())
{
char buf[1] = {0};
file.write(buf, sizeof(buf));
file.close();
}
Links zu anspruchsvollere Lösungen und Dokumentation wurden bereits veröffentlicht.
Werfen Sie einen Blick auf diese: http://www.cplusplus.com/forum/general/11272/