3
F3 c8 42 14 - latitude //05.13637° should be nearby this coordinate
5d a4 40 b2  - longitude //100.47629° should be nearby this coordinate

これはGPSデバイスから取得した16進データです。読み取り可能な座標に変換するにはどうすればよいですか?マニュアル文書はありません。助けてください。ありがとう

    22 00 08 00 c3 80 00 20 00 dc f3 c8 42 14 5d a4 40 b2 74 5d 34 4e 52 30 39
47 30 35 31 36 34 00 00 00

これは私が受け取ったフルバイトですが、エンジニアはF3 c8 42 14が緯度で、5d a440b2が経度であると教えてくれました。

4

3 に答える 3

4

私はMotorolaGPSモジュールを一度使用しましたが、ドキュメントには2つのヘクスがint型を表していると記載されていました。

あなたの場合は、ドキュメントも参照することをお勧めします。モデル番号がわかっている場合は、グーグルで検索できます。これが私が使用したモトローラGPSのドキュメントリンクです。

モトローラGPSモジュール

私はまたあなたのためにいくつかの計算をするために自由を取りました。あなたの緯度が確かにあった場合

0x1442c8f3 

(エンディアンはここで違いを生みます)。同等の整数は

339921139 

10進法で。これを3600000ミリ秒(1度=60分=60*60秒=60* 60 * 1000ミリ秒)で割ると、次のようになります。

94.4225386

度、これはあなたの期待に近いです。それを検証するのに十分なデータはありませんが、ほとんどのGPSモジュールは緯度と経度の両方でミリ秒角を返すと思います。)

于 2013-01-22T06:24:44.920 に答える
2

16進コードが暗号化されていない32ビット浮動小数点数を表すと仮定すると(そうでない場合もあります)、Cプログラムに読み込んで、を使用して出力してみることができますprintf("%f")

単語には両方のエンディアンが含まれる可能性があることを忘れないでください。つまり、最初の単語はF3 C8 42 14または14 42 C8 F3(バイトが逆になっている)である可能性があります。

両方の方法を試して、何か役立つものが得られるかどうかを確認してください。

このオンライン浮動小数点計算機からは、すぐに何も取得できませんでした。


編集:

Khanalの答えに基づいて、緯度/経度へのこのリンクは、数値が実際に固定小数点であることを示唆し、符号の規則を説明しています。

おそらく計算にもっと役立つのはHexItです。これにより、整数と浮動小数点の両方のさまざまなCデータ型から選択したり、リトルエンディアン表現とビッグエンディアン表現を行ったり来たりすることができます。

于 2013-01-22T05:36:26.603 に答える
1

値は32ビット浮動小数点だと思います。ただし、表示するストリームではバイトがわずかにシフトしています。経度を最初に取る:32ビット浮動小数点の100.47629は42C8F3DCであり、これらはストリームのバイト10から13です(最下位バイトが最初)。32ビット浮動小数点の緯度5.13637の場合、これらはバイト14から17ですが、バイトストリームでは40A45D14であるため、最下位10進数で少しずれています(ここでも、最下位バイトが最初です)。

于 2013-01-24T05:54:50.423 に答える