Binary 从十六进制值开始的GPS纬度和经度

Binary 从十六进制值开始的GPS纬度和经度,binary,gps,hex,coordinates,latitude-longitude,Binary,Gps,Hex,Coordinates,Latitude Longitude,我从GPS接收到以下回复到微控制器,而不是尝试解析字符串并将其转换为十六进制来发送,我宁愿使用提供的十六进制值然后发送到我的服务器,但我很难确定它存储的格式 纬度:37度39分48.84秒(0xFF94DE3A) Lon:144度58分10.30秒E(0x019C5B97) (另一个例子:) 纬度:49度10分21.49秒N(0x008BDE6C) Lon:123度4分14.76秒W(0xFEA1EE9A) 我试过用类似的题目回答其他问题,但都没有用 第一个例子中的Lat看起来像-702

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

  • 纬度:37度39分48.84秒(0xFF94DE3A)
  • Lon:144度58分10.30秒E(0x019C5B97)
(另一个例子:)

  • 纬度:49度10分21.49秒N(0x008BDE6C)
  • Lon:123度4分14.76秒W(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和什么有关?我觉得我错过了一些非常明显的东西

编辑:我能够使用下面的快速示例使其工作(我知道它不漂亮):

结果非常吻合,但我知道一定有比除以那个可怕的数字更好的方法?

根据,GPS坐标甚至可以按有理数设置:

存储在EXIF中时,坐标表示为一系列 GPS子IFD中的有理数。下面是 EXIF元数据的相关部分(以大端字节顺序):

恐怕你没有所有的十六进制数字,你只能看到有理数的上半部分。无形的除数可能就是那个神奇的数字

我并不是坚持要这样,我只是证明在格式中可能隐藏着任何东西。 以度为单位,坐标可以是高斯X,Y


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

可能与我在发布问题之前进行了广泛搜索。标题是相似的,但我不知道如何描述它。有许多不同的方法可以有效地实现/存储数字,而不是所有GPS设备都通用的方法。我测试了这个链接的问题(在我发布这个问题之前),但它不能解决这个问题。重复的你没有读过我上面的评论吗?这不一样,甚至不接近。
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';