Какой самый простой способ отформатировать двумерную матрицу парных чисел в двоичном формате для чтения в IDL?

Итак, у меня есть матрица парных чисел i на j в C ++, которую я хочу прочитать в программе IDL.

Допустим, что матрица называется data, с размером ROWS по COLS и строкой имени, сохраненной в имя файла. И я просто записываю значения в потоке в двоичный файл.

ofstream myfile (filename, ios::binary);
if(myfile.isopen())
{
for (int i = 0; i < ROWS; i++){
for (int j=0; j < COLS; j++){
myfile<<data.at(i,j);
}
myfile.close();

Затем я хочу прочитать его обратно в IDL, но я новичок в работе с двоичным файлом в IDL, и следование документации привело меня сюда, но это не работает.

function read_binmatrix, filename, ROWS, COLS, thetype

mat = READ_BINARY(filename,DATA_TYPE=thetype,DATA_DIMS=[ROWS-1,COLS-1])
return, mat

end
...
...
matrix = read_binmatrix(file2,num_rows,num_cols,5)

…но я получаю эту ошибку в качестве вывода.

% READ_BINARY: READU: End of file encountered. Unit: 100, File:
...
% Execution halted at: READ_BINMATRIX     21
...

1

Решение

 myfile<<data.at(i,j);

записывает текст в файл, а не двоичные данные. Для записи чисел в двоичном формате используйте std::ofstream::write():

 myfile.write(reinterpret_cast<char*>(&data.at(i,j),sizeof(decltype(data.at(i,j))));
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]