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

解決


まん  2004-12-11 11:02:44  No: 118219  IP: [192.*.*.*]

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

編集 削除
TX  2004-12-11 12:01:24  No: 118220  IP: [192.*.*.*]

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

編集 削除
まん  2004-12-11 12:57:24  No: 118221  IP: [192.*.*.*]

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

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

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

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

よろしくお願いします。

編集 削除
まん  2004-12-11 16:24:42  No: 118222  IP: [192.*.*.*]

すみません。下記の方法で自己解決しました。
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さん、読んで下さった方、ありがとうございました。

編集 削除