- ベストアンサー
工作機械データの可読性
- 工作機械で入力した数値と保存したデータが表示が異なる問題について
- 保存されているデータはバイナリデータであり、10進数を16進数に変換しても分からない
- 工作機械メーカの人に聞いてもバイナリエディタで変更はできると答えてくれたが、現在の状態では解決できない
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
IEEE 754 倍精度浮動小数形式 (リトルエンディアン) のようですね. > 1 は F0 3F, > 10 は 24 40, > 10.5 は 25 40, そうではなく,8バイト固定長なので,その前に 00 00 00 00 00 00 が付くはずです. ↓たまたま,以前自作した浮動小数ダンププログラムがあったので試してみました. D:\> dmpfloat 1 10 10.1 10.4 10.5 10.6 20 30 +1 = +.1E+1 +10 = +.101E+4 +10.1 = +.10100001100110011001100110011001100110011001100110011E+4 +10.4 = +.10100110011001100110011001100110011001100110011001101E+4 +10.5 = +.10101E+4 +10.6 = +.10101001100110011001100110011001100110011001100110011E+4 +20 = +.101E+5 倍精度浮動小数 | 単精度浮動小数 3F F0 00 00 00 00 00 00 | 3F 80 00 00 | +1 40 24 00 00 00 00 00 00 | 41 20 00 00 | +10 40 24 33 33 33 33 33 33 | 41 21 99 9A | +10.1 40 24 CC CC CC CC CC CD | 41 26 66 66 | +10.4 40 25 00 00 00 00 00 00 | 41 28 00 00 | +10.5 40 25 33 33 33 33 33 33 | 41 29 99 9A | +10.6 40 34 00 00 00 00 00 00 | 41 A0 00 00 | +20 40 3E 00 00 00 00 00 00 | 41 F0 00 00 | +30 > この様なデータの書式や変換の方法 例えばC言語を使うなら,そのバイナリデータをそのまま fread() で double 型変数に読み込みます.リトルエンディアンのマシンならこれで OK. ビッグエンディアンのマシンならばその変数のバイト順を逆転させます. 浮動小数点数 http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0 IEEE754 Floating Point Number http://msugai.fc2web.com/java/binary.html
お礼
早速の回答ありがとうございます。 そのような表記があるとは知りませんでした、 すぐにこの方法で制作し始めようと思います。 制作言語はVBもしくはVBスクリプトで制作しようと思ってます。 また分からないことがあると思いますので今後も、 よろしくお願いします。 助かりました。 本当にありがとうございます。