我有一个GPS设备,它会向我的服务器发送数据,我需要将设备发送的十进制值转换成纬度和经度。由于我不擅长数学,所以我的所有尝试都失败了,以下是规范:
纬度
占用4个字节,表示纬度值。
数字范围从0到162000000,表示从0°到90°的范围。单位:1/500秒 转换方法:
A)将GPS模块的纬度(度、分)数据转换为新形式,仅表示分钟值;
B)将转换后的值乘以30000,然后将结果转换为十六进制数。
例如22°32.7658′,(22×60+32.7658)×30000=40582974,然后将其转换为十六进制数0x02 0x6B 0x3F 0x3E
经度
占用4个字节,表示位置数据的经度值。数字范围从0到324000000,表示从0°到180°的范围。单位:1/500秒,转换方法与纬度相同。
我想出了这个函数,但它似乎不起作用:
procedure GetDegree(const numar : DWORD; out min,sec : Extended);
var
eu : Extended;
begin
eu := numar / 30000;
min := Trunc(eu / 60);
sec := eu - min * 60;
end;
GetDegree(324032,M,S)
时,我得到了M=321
和S=12
,但是正确的输出应该是M=1
和S=33
。” - Deestan