- ベストアンサー
バイナリファイルの計算方法
バイナリデータをはじめて扱う初心者です。 バイナリデータファイルからデータを読み出したいと思います。 環境はWindowsXPとLabView7.1です。 バイナリエディタで見てみると、 E8 03 と格納されている、2バイトshort型のデータがあります。 LabView7.1を使って、E8 03 という配列要素を読み出すことまではできました。 次に、この値を10進数で表現すると、いくつになれば正解なのでしょうか? (E8 03 という値をどのように計算して10進数にすればいいのでしょうか?) 私なりにプログラムした結果、-24か232のどちらかだと思うのですが自信がありません。 (データ自体が計測器が吐き出したデータなので、どのような値が入っているかわからないのです。 LabViewがビックエンディアンを使っていることも、正解に自信が持てない一因です) バイナリエディタで10進数に変換してくれるようなツールがあれば一番いいのですが。 ご存知の方がいらっしゃいましたら、ご教授ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
E8 03がどういう値なのかはその計測器の仕様次第なので、その仕様を知らなければ誰にも分からないと思いますが、「E8 03」という数字だけ見ると、リトルエンディアンの03e8hはよく見る値(10進でちょうど1000)ですから、おそらく1000だろうなーとは思います。
その他の回答 (2)
- tatsu99
- ベストアンサー率52% (391/751)
1.LabViewがビックエンディアンを使っている。従ってビッグエンディアン形式で格納している。 2.E803は2バイトshort型である。 上記のことが、成立するという前提ですが、その場合は、 -6141になります。符号無し(unsigend short型)なら59395になります。 つまり、short型(符号付き2バイト整数)のE803(ビッグエンディアン形式)は、-6141になります。 ちなみに、E8単独(1バイト)では、符号無しで、232になり、符号付きで、-24となります。但しこれは、1バイトですから、unsigned char型又はchar型に相当します。
お礼
説明不足ですみません。 バイナリファイルを吐き出しているプログラムは、たぶんリトルエンディアンで格納しています。 ただし、コンパイルされているため、中身がわからず、データから類推しようとしていた次第です。
- OsieteG00
- ベストアンサー率35% (777/2173)
計測器の吐き出す仕様によると思いますが。 E8が上位バイトなのか、下位バイトなのか。データ長は何バイトなのか、符号ビットはあるのか無いのか又はどこにあるのか。BCDで見ればよいのか、パック形式でデータは格納されているのか。 で全然異なります。 XPなら電卓で10進<->16進変換はできますね。
お礼
電卓が利用できるとは、うっかり忘れていました。 普通に、16^3*E+16^2*8+16^1*0+16^0*3 とすればよかったのですね。 仕様がわからないので、データから読み解いていこうと思っていました。
お礼
ご指摘のとおり、たぶん1000という値が正解だと思います。 やっと、明かりが見えてきました。 ご回答ありがとうございました。