Ich möchte eine Datei erstellen und "A" in es schreiben (ascii ist 65 == 01000001). Seltsame Tatsache, was auch immer der Wert von std::string binary
ist, wird immer der Buchstabe P in myfile.txt
geschrieben.fwrite binäre Daten von einer Zeichenfolge
std::string binary = "01000001";
std::string file = "myfile.txt";
FILE* f;
f = fopen(file.c_str(), "wb");
fwrite(&binary, 1, 1, f);
fclose(f);
Nach der Ausführung dieses Codes, lese ich binäre Daten mit dem Befehl xxd -b myfile
und ich bekomme diese:
00000000: 01010000
Haben Sie auf diesem Code sehen, ein Problem?
Warum nicht verwenden C-Style Saiten direkt? (Witz - du verwendest keine C++ - Streams) Du hast 'fopen (file.c_str() ... ', aber' fwrite (& binary ... '. Einer von ihnen ist falsch. – LogicStuff
Glaubst du, dass es sein könnte einfacher mit ostream zu arbeiten? – Milow
Die 'binary' Variable ist ein String, der die ASCII-Darstellung von" 01000001 "enthält. Dies ist keine Zahl ist TEXT. Um" A "in die Datei zu schreiben, sollten Sie' binary = "A" verwenden 'und dann' fwrite (binary.c_str(), 1,1, f) !!! Aber ich denke, Sie würden Binär in seinem ASCII-Wert beginnend mit dem Binärwert konvertieren –