Ich möchte mit C++ eine Reihe von Zahlen in einer Binärdatei speichern, um sie später mit Python zu öffnen. Zur Zeit habe ich das folgende Skript in C++ namens * writer.cpp:Binär in C++ schreiben und Python einlesen
#include <fstream>
int main()
{
std::ofstream outFile;
outFile.open("binaryFile.bin", std::ios::binary);
int number = 0;
for (int i=0; i<10; i++){
number += i;
outFile.write(reinterpret_cast<const char*>(&number), sizeof(int));
}
outFile.close();
return 0;
}
die, wenn sie als
g++ -o writerTest.x writer.cpp
kompilieren und laufen als
./writerTest.x
eine binäre Datei mit dem Namen „binaryFile erzeugen. Behälter".
Ich versuche dann mit dem folgenden Skript namens reader.py dies mit Python zu lesen:
import numpy as np
from sys import argv
path = str(argv[1])
x = np.fromfile(path)
print x, type(x)
Lauf dies als Python reader.py binaryFile.bin folgendes Ergebnis
produzieren[ 2.12199579e-314 1.27319747e-313 3.18299369e-313 5.94158822e-313
9.54898106e-313] <type 'numpy.ndarray'>
Was offensichtlich nicht das war, was ich mir erhofft hatte. Was mache ich falsch und wie soll das richtig gemacht werden?
Sie können nicht einfach in eine Datei schreiben und schreiben, Sie müssen Ihre Daten in ein bekanntes Format (ein existierendes oder ein selbst erstelltes Format) serialisieren. – spectras
Sie schreiben ganze Zahlen und lesen Floats, die nicht funktionieren können. (Binär) –
@spectras: In der Praxis wird der OP-Code in den meisten Fällen wahrscheinlich unter der Annahme eines nicht zu aggressiven Optimierers und einer "vernünftigen" Plattform funktionieren. Theoretisch musst du das Ding in eine Reihe von Charakteren maskieren und rekonstruieren, aber meh. – Kevin