バイナリーからIEEE形式の浮動小数点に変換するには?

解決


まん  2004-12-11 20:02:44  No: 118219

IEEE形式の浮動小数点データがBinaryの状態で送信される
装置があり、受信したデータをDoubleに変換したいのですが、
良い方法がわからず悩んでいます。
どなたかご指導お願いします。


TX  2004-12-11 21:01:24  No: 118220

Byte→Double?
Cdbl(ByteData)でダメだったっけか・・
誤爆ごめん


まん  2004-12-11 21:57:24  No: 118221

>TXさん
ありがとうございます。
説明不足で申し訳ございませんが、CDBL()じゃないです。

たとえば、3.14という数字を浮動小数点で表現すると
4009 1EB8 6000 0000(HEX)となります。

少し調べてみたのですが、倍精度の場合、符号部1ビット
,指数部11ビット,仮数部52ビットに分けられ、
(-1)^符号×2^(指数-127)×(1.仮数)
で表現されるようです。
式に書くと簡単に見えますが、かなり複雑なアルゴリズム
になりそうで。。。
VBの内部で、SingleやDoubleの変数データは、
元からこの形式で保存されているはずなのですが、
アクセスする方法がわかりません。

APIとかでそのようなものがあれば良いのですが、
ご存じありませんでしょうか?

よろしくお願いします。


まん  2004-12-12 01:24:42  No: 118222

すみません。下記の方法で自己解決しました。
Declare Sub CopyValtoVal Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any, Source As Any, ByVal length As Long)

CopyValtoVal dbl, byt(0), 8

でbyt(0〜7)に入っているデータをdblにコピーすればOKでした。
TXさん、読んで下さった方、ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加