2012-03-13 21 views
1

私は通常バイナリファイルを扱っていませんので、これに対する答えが明らかであれば謝ります。私は、次のコマンドを使用して、特定のバイナリファイルから細かい読み取ることができています:C:バイナリファイルを読む

nread = fread(&data[0],sizeof(float),maxpts,fptr); 

バイナリが標準化された科学的な形式であり、データがフロートとして格納されているようです。しかし、このデータをdouble型の配列に読み込むことをお勧めします。データ型をdouble(floatから)に切り替え、sizeof(float)をそのままにしてみると、データが正しく取得されません。これをどうやってやりますか?ありがとう、ザック。

答えて

3

データを浮動小数点として読み込み、一括代入(double型の配列を読み込み、要素ごとにdoubleArray[i] = floatArray[i]に設定するなど)でデータをdouble型に変換する必要があります。

(フロートやダブルの記憶に関する特定の事実を利用して)このプロセスを加速する方法がありますが、それはおそらくそれほど価値がありません。特に微妙な不正確さがあるかもしれません。

+0

ありがとうございました。 – zach

2

データをfloat型の精度で読み取ってから、double型の配列を割り当て、forループを使用して手動でdouble型の配列を埋めることができます。

は基本的に私の古い質問How can I perform conversion from float -> double -> float when processing an audio buffer in c++

の1を参照してください。 。

doubleArray=malloc(numElements*sizeof(double)); 
for (int nn=0; nn<numElements; ++nn) 
{ 
    doubleArray[nn] = floatArray[nn]; 
} 
関連する問題