我正在尝试从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。
答案 0 :(得分:4)
将所有四个值存储在无符号的32位变量中
v1 = 0x02
,v2 = 0x6b
,v3 = 0x3f
,v4 = 0x3e
。
计算(v4 << 48) | (v3 << 32) | (v2 << 16) | v1
这将产生一个值为40582974十进制的变量。
将其转换为浮动并将其除以30,000.0(您的3,000是错误的),这将为您提供1,352.765
切成整数并除以60.这将给你22。
将您在步骤4中获得的数字乘以60并将其从第3步中获得的数字中减去。这将为您提供1352.765 - 22*60
或32.765。
答案为22
,32.765
。