如何从十六进制转换GPS经度和纬度

Ade*_*eed 6 gps

我正在尝试从GPS追踪设备转换GPS数据.该公司提供了协议手册,但目前尚不清楚.我能够从设备收到的数据包中解码大部分数据.通信是通过TCP/IP进行的.我在解码经度和纬度的十六进制值时遇到问题.以下是手册中的示例:

例:22º32.7658'=(22X60 + 32.7658)X3000 = 40582974,然后转换成十六进制数40582974(十进制)= 26B3F3E(十六进制),最后该值为0x02 0x6B 0x3F 0x3E.

我想知道如何从十六进制逆转到经度和纬度.该设备将发送26B3F3E.我想知道获得22º32.7658的过程.

该协议适用于GT06和Heacent 908.

Dav*_*rtz 5

  1. 将所有四个值存储在无符号的32位变量中。
    v1 = 0x02v2 = 0x6bv3 = 0x3fv4 = 0x3e

  2. 计算出(v4 << 48) | (v3 << 32) | (v2 << 16) | v1这将产生一个保留值为40582974(十进制)的变量。

  3. 将其转换为浮点数并将其除以30,000.0(您的3,000是一个错误),这将为您提供1,352.765

  4. 切成整数并除以60。这将得出22。

  5. 将您在第4步中获得的数字乘以60,然后从在第3步中获得的数字中减去。这将1352.765 - 22*60得出32.765。

有你的答案2232.765

  • 大卫,我听了你的建议,它行得通。再次感谢您的帮助 (2认同)