プロが教えるわが家の防犯対策術!

バイナリデータをはじめて扱う初心者です。

バイナリデータファイルからデータを読み出したいと思います。
環境はWindowsXPとLabView7.1です。

バイナリエディタで見てみると、
 E8 03
と格納されている、2バイトshort型のデータがあります。
LabView7.1を使って、E8 03 という配列要素を読み出すことまではできました。

次に、この値を10進数で表現すると、いくつになれば正解なのでしょうか?
(E8 03 という値をどのように計算して10進数にすればいいのでしょうか?)

私なりにプログラムした結果、-24か232のどちらかだと思うのですが自信がありません。
(データ自体が計測器が吐き出したデータなので、どのような値が入っているかわからないのです。
LabViewがビックエンディアンを使っていることも、正解に自信が持てない一因です)

バイナリエディタで10進数に変換してくれるようなツールがあれば一番いいのですが。
ご存知の方がいらっしゃいましたら、ご教授ください。

A 回答 (3件)

E8 03がどういう値なのかはその計測器の仕様次第なので、その仕様を知らなければ誰にも分からないと思いますが、「E8 03」という数字だけ見ると、リトルエンディアンの03e8hはよく見る値(10進でちょうど1000)ですから、おそらく1000だろうなーとは思います。

    • good
    • 0
この回答へのお礼

ご指摘のとおり、たぶん1000という値が正解だと思います。

やっと、明かりが見えてきました。

ご回答ありがとうございました。

お礼日時:2005/10/10 02:59

1.LabViewがビックエンディアンを使っている。

従ってビッグエンディアン形式で格納している。
2.E803は2バイトshort型である。
上記のことが、成立するという前提ですが、その場合は、
-6141になります。符号無し(unsigend short型)なら59395になります。
つまり、short型(符号付き2バイト整数)のE803(ビッグエンディアン形式)は、-6141になります。
ちなみに、E8単独(1バイト)では、符号無しで、232になり、符号付きで、-24となります。但しこれは、1バイトですから、unsigned char型又はchar型に相当します。
    • good
    • 0
この回答へのお礼

説明不足ですみません。

バイナリファイルを吐き出しているプログラムは、たぶんリトルエンディアンで格納しています。
ただし、コンパイルされているため、中身がわからず、データから類推しようとしていた次第です。

お礼日時:2005/10/10 02:58

計測器の吐き出す仕様によると思いますが。



E8が上位バイトなのか、下位バイトなのか。データ長は何バイトなのか、符号ビットはあるのか無いのか又はどこにあるのか。BCDで見ればよいのか、パック形式でデータは格納されているのか。
で全然異なります。

XPなら電卓で10進<->16進変換はできますね。
    • good
    • 0
この回答へのお礼

電卓が利用できるとは、うっかり忘れていました。

普通に、16^3*E+16^2*8+16^1*0+16^0*3 とすればよかったのですね。

仕様がわからないので、データから読み解いていこうと思っていました。

お礼日時:2005/10/10 02:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!