将十六进制字节转换为坐标

时间:2019-10-18 22:41:51

标签: hex decimal coordinates

我正在尝试将十六进制流转换为纬度/经度坐标。 输入流来自通过TCP的Meitrack跟踪器(P99G型号)。 输入以小端为单位,以百万分之一度为单位 可以在以下位置找到规格:http://www.meitrack.com/cd-download/Protocols/MEITRACK_P99G_GPRS_Protocol.pdf-但这不是很有用。

这是一个示例,我希望它可以翻译为:

拉特: 输入:efbfbdefbfbd5102 预期产量:38.907163

长:52efbfbd68efbfbd 预期输出:-77.007786

(预期输出来自同时通过SMS接收到的坐标)

我能够通过反转字节顺序并将其转换为十进制来解密其他参数,但是它似乎不适用于坐标。

在弄清楚如何将十六进制字节转换为十进制坐标方面的任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

几年前,我已经实现了P99G消息解析器,现在检查该代码以测试给定的经纬度对。似乎测试输入和预期输出不匹配:根据给定的编码(和有效的解析器),纬度十六进制字符串转换为-272.777233,转换为-1111.49483。

实现协议时,棘手的部分是当消息包含不同类型和数量的命令时,如何在输入字节数组中正确定位数据包。因此,我的猜测是,此处的编码不是问题,而是纬度/经度对的边界发生了偏移,错过了-应该首先检查消息部分的标识以找到正确的纬度/经度字节序列。