サーバーにデータを送信するGPSデバイスがあります。デバイスが送信する10進値を緯度と経度に変換する必要があります。私は数学が苦手なので、すべての試みが失敗しました。仕様は次のとおりです。
緯度
緯度の値を表す4バイトを占有します。
数値の範囲は0〜162000000で、0°〜90°の範囲を表します。単位:1/500秒変換方法:
A)GPSモジュールからの緯度(度、分)データを、値を分単位でのみ表す新しい形式に変換します。
B変換した値に30000を掛けて、その結果を16進数に変換します。
たとえば、22°32.7658'、(22×60 + 32.7658)×30000 = 40582974の場合、16進数に変換します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;