• ベストアンサー

バイナリから実数を取得したいのですが・・・

C++にてバイナリデータから倍精度の浮動小数を取得したいと考えています。 バイナリの中にリトルエンディアン形式で倍精度の浮動小数が64ビット幅に収められています。 これをdouble型の変数に代入したいのですが、どうすれば(できれば簡単な方法で)値を代入できるでしょうか? ご教授お願いします。 データのサンプルを念のために記載させて頂きます。 B2 9C 05 DA 7D 40 6C 3F -> 3.448720745086919e-3

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

VC++ の場合ですと unsigned char ch[] = { 0xb2,0x9c,0x05,0xda,0x7d,0x40,0x6c,0x3f }; double *pd = (double*)ch; double d = *pd; こんな具合で dにdoubleの数値が取得できましたよ ^^

fallen4487
質問者

お礼

ポインタのキャストだけで上手くいくなんて目からウロコです。 大変勉強させて頂きました。 丁寧な回答ありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「簡単な方法」も何も, 「リトルエンディアン形式で倍精度の浮動小数」のフォーマットを調べて努力と根性で変換するしかないと思う. 可能なら ldexp を使えばちょっとは簡単.

fallen4487
質問者

お礼

回答ありがとうございました。解決しました。

関連するQ&A