我正在尝试从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.
我有一些二进制数据流传递地理位置坐标 - 纬度和经度.我需要找到他们编码的方法.
4adac812 = 74°26.2851' = 74.438085
2b6059f9 = 43°0.2763' = 43.004605
4adaee12 = 74°26.3003' = 74.438338
2a3c8df9 = 42°56.3177' = 42.938628
4ae86d11 = 74°40.1463' = 74.669105
2afd0efb = 42°59.6263' = 42.993772
Run Code Online (Sandbox Code Playgroud)
第一个值是十六进制值.第二和第三是我在输出中得到的值(不确定在转换中使用哪一个).
我发现第一个字节表示值的整数部分(0x4a = 74).但我无法找到小数部分的编码方式.
我真的很感激任何帮助!
谢谢.
-
Upd:这个流来自一些"中国"gps服务器软件通过tcp协议.我没有关于clent软件的资料或文档.我想它是用VC++ 6编写的,并使用了一些标准实现.
-
更新:这是我得到的数据包:
Hex data:
41 00 00 00 13 bd b2 2c
4a e8 6d 11 2a 3c 8d f9
f6 0c ee 13
Log data in client soft:
[Lng] 74°40.1463', direction:1
[Lat] 42°56.3177', direction:1
[Head] direction:1006, speed:3318, …Run Code Online (Sandbox Code Playgroud)