HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0409
zenodouble型16進数文字列の10進数への変換3解決


zeno

リンク

2013/4/9(Tue) 11:23:45|NO.53505

"40F86A0000000000"のような
符号部 1bit
指数部 11bit
仮数部 52bit
になっているdouble型の文字列を、有効数字8桁程度の10進数に変換したいと思っています。

素直に定義式に当てはめて計算すると
2の52乗等が出てきて、hspで扱える範囲外になってしまい、計算することができません。

何か良い方策はありませんでしょうか?
よろしくお願い致します。



この記事に返信する


skyblue

リンク

2013/4/9(Tue) 18:23:59|NO.53508

一桁ずつ重みなども考慮して自力計算する。
表示や保存は全て文字列で、計算のときだけint型にする。
そうすれば2048bitであろうが可能。ただし、そこまでくると遅いが。



test

リンク

2013/4/9(Tue) 19:57:42|NO.53512

浮動小数点数は単なるバイナリデータに過ぎません。バイナリ表現がわかっているなら、そのバイナリ表現をもとに変数を作ればその数値が得られます。
doublestr="40F86A0000000000"
//double型変数を作る a=0.0 //1バイトずつpokeで変数に書き込む repeat 8 //16進表現を2桁切り取って数値に直す byte=int("$"+strmid(doublestr,(7-cnt)*2,2)) //書き込む poke a,cnt,byte loop //結果を表示 mes a



zeno

リンク

2013/4/10(Wed) 19:19:33|NO.53520

>skyblueさん
>testさん
返信ありがとうございます

バイナリデータの扱いを理解していれば、こんなにすっきり書けるものなんですね
勉強になります



ONION software Copyright 1997-2023(c) All rights reserved.