2016-12-04 2 views
0

HI Ich versuche, in eine TXT-Datei in Binärdatei zu schreiben.
jetzt schrieb ich diesen Code:C++ Binär in eine Datei schreiben

#include <iostream> 
#include <fstream> 
using namespace std; 
int main() 
{ 
    char* f = "abc"; 
    ofstream ofile("D:\\foobar.txt", ios_base::out | ios_base::binary); 
    ofile.write(f, sizeof(char*)); 
    return 0; 
} 

jetzt ist es "abc", aber nicht in binärer schreibt.
kann mir bitte jemand sagen, wie man es im Binärformat schreibt.

Antwort

1

Zunächst einmal schreiben Sie die falsche Größe und können außerhalb der Grenzen gehen. Verwenden Sie stattdessen strlen, um die Länge der Zeichenfolge zu ermitteln.

Zweitens, darüber nachdenken, wie ein Buchstabe wie 'a' im Speicher im Computer gespeichert ist. Es wird in jeder Codierung gespeichert, die der Compiler und das Betriebssystem verwenden, was höchstwahrscheinlich ASCII ist. Wenn Sie diesen Buchstaben in eine Datei schreiben, schreibt er den gespeicherten Wert in die Datei, und wenn Sie die Datei mit einem Programm lesen, das die Codierung entschlüsseln kann, wird Ihnen der Buchstabe angezeigt.

Ich rate nur hier, aber ich denke, Sie erwartet Binärformat, um tatsächliche Einsen und Nullen als Text zu schreiben. Nun, Sie tun schreiben Einsen und Nullen, nicht als Text, sondern als einzelne Bits. Und wenn all diese Bits zu Bytes zusammengesetzt werden, erhalten Sie die Bytes, wie sie im Speicher gespeichert sind. Wenn Sie sich die Datei in einem Hex-Editor ansehen, werden Sie die tatsächlichen Werte sehen, und Sie könnten sogar ein Programm finden, das Ihnen die tatsächlichen binären Werte als Einsen und Nullen anzeigt.

+0

das war meine Theorie auch. Ich schätze, mein Buch beschreibt die Dinge nicht gut genug – Rokni