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

时间:2013-06-28 00:56:44

标签: 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。

1 个答案:

答案 0 :(得分:4)

  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。

  6. 答案为2232.765