Мне нужна ваша помощь снова для сохранения и чтения данных в двоичном формате. У меня есть, vector<<complex> > xy(256)
, который считывается из аппаратной в 10 раз:Как сохранить и прочитать двоичные данные?
vector<<complex> > xy(256);
ofstream outfile2 (outfilename2.c_str() , ofstream::binary);
....
....
for(unsigned t = 0; t < 10; t++)
{
....
....
for(unsigned i = 0; i < 256; i++)
{
xy[i] = f[i] * conj(g[i]);
}
for(unsigned i = 0; i < 256; i++)
{
outfile2 << boost::format("%20.8e") % xy[i]<< endl; // write in text
}
} // the text data will be 2560 lines of complex data, for example:
// (6.69635350e+06,7.34146150e+06)
Теперь я пытаюсь сохранить в двоичный файл, используя следующую команду:
for(unsigned i = 0; i < 256; i++)
{
outfile2.write((const char*)& xy[i], 1 * sizeof(complex<short>));
outfile2.flush();
}
Несмотря на то, что до сих пор дают мне данные, но когда я сравниваю исходные текстовые данные, они были разными. Я не понимаю, почему?
Я хотел бы прочитать комплекс 16 с данными с плавающей запятой.
Надеюсь, вы, ребята, можете помочь.
спасибо.
@ Сергей Сергей Надеюсь, вы можете мне помочь по этому вопросу, я все еще запутался по двоичным данным. Большое спасибо. –
* «когда я сравниваю исходные текстовые данные, они были разными» * разные как? пожалуйста, отправьте пример вывода (плюс то, что вы ожидали). также как вы его сравниваете? – UnholySheep
& xy [i] может иметь смысл, может быть, нет. вектор не является класическим массивом C. и оператор индексирования «эмулируется» –