【发布时间】:2017-07-18 15:51:12
【问题描述】:
我有一个要解析的二进制文件。文件的一小部分有一组坐标(纬度和经度)。一个小例子如下:
$data = "64DA7300 0CD5DFFF";
我正在尝试查看整数,但我还没有运气。
$header = unpack("ilatitud/ilongitude", $data);
print_r($header);
我知道正确的数字应该是:(7592548, -2108148),但结果是1094988854, 808465207。
有什么想法吗?谢谢。
【问题讨论】:
-
是ADS-B坐标吗?如果我没记错的话,他们需要的不仅仅是普通的十六进制 -> 二进制转换
-
它们只是GPS坐标,结果需要除以65536才能得到准确的坐标。但是,我的问题是转换.. :/
-
$data = "64DA7300 0CD5DFFF";那不是二进制文件。 -
@tkausl 是的...你的意思是?如果您参考我对二进制的评论,您可以了解 ADS-B GPS 的工作原理。这是飞机发送到地面的东西,告诉他们他们在哪里。使飞行雷达工作的东西。由于全尺寸 GPS 信号对于飞机来说太大了,他们将其压缩为十六进制 -> 二进制 -> 十进制以获取坐标。
-
我的意思是,您正试图从包含 ascii-hex 形式的 int 的字符串中解压缩二进制 little-endian int。
标签: php unpack endianness int32