IEEE形式の浮動小数点データがBinaryの状態で送信される
装置があり、受信したデータをDoubleに変換したいのですが、
良い方法がわからず悩んでいます。
どなたかご指導お願いします。
Byte→Double?
Cdbl(ByteData)でダメだったっけか・・
誤爆ごめん
>TXさん
ありがとうございます。
説明不足で申し訳ございませんが、CDBL()じゃないです。
たとえば、3.14という数字を浮動小数点で表現すると
4009 1EB8 6000 0000(HEX)となります。
少し調べてみたのですが、倍精度の場合、符号部1ビット
,指数部11ビット,仮数部52ビットに分けられ、
(-1)^符号×2^(指数-127)×(1.仮数)
で表現されるようです。
式に書くと簡単に見えますが、かなり複雑なアルゴリズム
になりそうで。。。
VBの内部で、SingleやDoubleの変数データは、
元からこの形式で保存されているはずなのですが、
アクセスする方法がわかりません。
APIとかでそのようなものがあれば良いのですが、
ご存じありませんでしょうか?
よろしくお願いします。
すみません。下記の方法で自己解決しました。
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さん、読んで下さった方、ありがとうございました。