我有一个GPS设备文档,其中指出它们发送的纬度和经度数据已从具有6个隐式十进制的整数转换为HEX。如果value为负数,则以2的补码格式表示。
我们可以轻松地转换正值,但是当值是负数时就会出现问题。使用C#BitConverter.ToInt32,它将转换:
runBlocking
要检查其是否为负值,我们正在检查整数值是否超出纬度/经度范围。因此,如果经度在-180到180之间,则它为负。但是如何将这个2的补码值转换为负经度?
编辑: 添加用于将十六进制转换为整数的代码:
Longitude: 24-F7-07-E3 -->> 723388387 (wrong, it must be negative),
Latitude: 04-05-0C-00 -->> 67439416(correct)