2016-07-25 57 views
1

所以我有一個我在C + +的雙打矩陣,我想讀入一個IDL程序。將二進制二元矩陣格式化爲二進制格式以讀取IDL格式的最基本方法是什麼?

可以說矩陣被稱爲數據,COLS的大小爲ROWS,名稱字符串保存爲文件名。我只是將數據流中的值寫入二進制文件。

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是接口描述語言的縮寫,是一種語言**(不要與[tag: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))));