2016-11-24 21 views
0

ファイルからバイナリデータを読み込み、double型の数値に変換して画面に出力しようとしています。私はバイトと整数のデータのためにこれを動作させることができますが、倍精度に変換しようとすると0になります。二重型の数値でなければならないのと同じくらい0がありますが、バイナリ形式の数値はゼロではありません。私はsizeof(int)* 1と(int)バッファを使用し、バイトデータに対してもdoubleデータではなく、これは整数で動作すると言いました。ファイルから二重バイナリデータを読み取る

答えて

2

1バイト幅のバッファを使用しています。あなたがsizeof(int)を読んで、それをsizeof(char)バッファにコピーしているので、intで「働いています」という事実は偽陽性に過ぎません。

あなたがdoubleを読みたい場合は、例えば、宛先バッファとしてdoubleを使用します。

double buffer; 

while((ret_in = read (input_fd, &buffer, sizeof(double))) >0) { 
    printf("%f ", (double)buffer); 
} 
+0

私は今理解...私の愚かは..あなたに感謝:) – Luki

関連する問題