2016-07-25 2 views
1

Итак, у меня есть i by j матрица двойников в C++, которую я хочу прочитать в программе IDL.Каков самый простой способ форматирования 2D-матрицы удвоений в двоичном формате для чтения в IDL?

Допустим, что матрица называется данными с размером 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 
... 
+0

вы тестировали C++ части автономно, а также рассматривать бинарный файл для проверки значения, как ожидается там? – M4rc

+2

Вы уверены, что этот вопрос правильно помечен [tag: idl]? –

+2

* IDL, сокращенно для интерфейса Описание Язык, это язык [...] ** (Не путать с [тег: idl-programming-language], язык, используемый для анализа научных и медицинских изображений) *** - Используете ли вы правильный тег '[idl]'? –

ответ

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

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

myfile.write(reinterpret_cast<char*>(&data.at(i,j),sizeof(decltype(data.at(i,j)))); 
Смежные вопросы