Я обновляю код Python и код C ++, чтобы второй мог читать данные, полученные от первого, использовать его для запуска перед повторной отправкой обновленных данных в исходный код Python.Точнее: - Мой файл Python создает список данных [2] [5]:
data = [[Cij[0, 0],Cij[0,1],Cij[0,2],Cij[2,2],Cij[3,3]],[50,50,100,100,0]]
, когда Cij плавает, и я хочу сохранить его в файле bin, открыть его в C ++ и получить доступ к этим даннымдля того, чтобы изменить его.Затем я сохраняю эти измененные данные в другой bin-файл, чтобы прочитать его в моем коде python.Я хочу сделать это, используя как можно меньше внешних библиотек, поскольку цель кода - сделать его публичным и простым в использовании.Есть идеи ?
Я работал с ошибками данных, мой код на С ++ читал, как кажется, совершенно неверные числа из файла bin.Однако вторая часть (чтение на Python измененных данных из бина, сгенерированного с ++), похоже, работает.
В настоящее время я использую pickle для выгрузки данных в бин, а затем я получаю к ним доступ наc ++ делает:
DataFile.open('Binpath', ios::binary|ios::in);
float data[2][5];
DataFile.read((char*)&data,sizeof(data));
Но когда я печатаю данные в файле C ++, это совершенно неправильно.
Итак, вот полный пример: В Python я пишу:
import pickle
data = [[1.1, 1.1, 1.1, 1.1], [2.2, 2.2, 2.2, 2.2]]
outfile = open("test.bin", 'wb')
pickle.dump(data, outfile)
outfile.close()
и в c ++:
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int main() {
ifstream DataFile;
DataFile.open("test.bin", ios::binary|ios::in);
if(!DataFile.is_open()){
cout<< "error"<<endl;
}
float data[2][4] = {{0.0,0.0,0.0,0.0},{0.0,0.0,0.0,0.0}};
DataFile.read((char*)&data,sizeof(data));
for (int i = 0; i<4; i++){
cout << data[0][i]<< endl;}
for (int i = 0; i<4; i++){
cout << data[1][i]<< endl;}
cin.ignore();
DataFile.close();
return 0;
}
результаты печати неверны.
Спасибо за любую помощь.