gpt4 book ai didi

binary - GPS 纬度和经度(十六进制值)

转载 作者:行者123 更新时间:2023-12-02 06:51:50 25 4
gpt4 key购买 nike

我从 GPS 到微 Controller 收到以下回复,而不是尝试解析字符串并将其转换为十六进制发送,我宁愿只使用提供的十六进制值然后发送到我的服务器,但我'我很难确定它的存储格式。

  • 纬度:37 度 39 分 48.84 秒 S (0xFF94DE3A)
  • 经度:东经 144 度 58 分 10.30 秒 (0x019C5B97)

(另一个例子:)

  • 纬度:北纬 49 度 10 分 21.49 秒 (0x008BDE6C)
  • 经度:123 度 4 分 14.76 秒 西经 (0xFEA1EE9A)

我尝试过类似标题的其他问题的答案,但没有成功。

第一个示例中的 Lat 看起来像 -7020998 dec,因为它位于南方,类似于第二个示例中的 Lon (-22942054) 在西方也是负值。

我尝试将数字除以转换后的预期结果(使用度+分/60+秒/3600)我得出了一个粗略的数字,即:

  • 0xFF94DE3A = -7020998/-37.66357 = ~186413.502
  • 0x019C5B97 = 27024279/144.96953 = ~186413.510
  • 0x008BDE6C = 9166444/49.17264 = ~186413.501
  • 0xFEA1EE9A = -22942054/-123.07077 = ~186413.508

这看起来接近 180000,但如果我除以它,它看起来就不正确 (-7020998/180000 = -39.00554)。 186413 与什么相关?我觉得我错过了一些完全明显的东西..

编辑:我可以使用下面的快速示例让它工作(我知道它不太漂亮):

if ($GPSLatitude > 0x7FFFFFFF) // ensure correct signedness
$GPSLatitude-=0x100000000;

$GPSf = floatval($GPSLatitude) / 186413.51334561207757602506827277;
$GPSD = floor($GPSf);
$GPSt = abs($GPSf - $GPSD) * 60;
$GPSM = floor($GPSt);
$GPSS = floor(($GPSt - $GPSM) * 6000) / 100;
echo 'GPS Latitude: ' . $GPSD . ' Deg ' . $GPSM . ' Min ' . number_format($GPSS,2,'.','') . ' Sec';

结果完全匹配,但我知道一定有比除以那个可怕的数字更好的方法吗?

最佳答案

根据http://en.wikipedia.org/wiki/Geotagging ,甚至可以在有理数中设置 GPS 坐标:

When stored in EXIF, the coordinates are represented as a series of rational numbers in the GPS sub-IFD. Here is a hexadecimal dump of the relevant section of the EXIF metadata (with big-endian byte order):

恐怕您没有全部十六进制数字,您只能看到有理数的上半部分。而看不见的除数可能就是那个神奇的数字。

我并不坚持如此,我只是证明格式中可能隐藏着任何内容。你以度为单位进行计数,坐标可以简单地是高斯 X,Y。

无论如何,您的 GPS 格式的名称是什么?

关于binary - GPS 纬度和经度(十六进制值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20612608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com