用PHP解包签名的int32 little endian

用PHP解包签名的int32 little endian,php,unpack,endianness,int32,Php,Unpack,Endianness,Int32,我有一个二进制文件,我正试图解析它。文件的一小部分有一组坐标(纬度和经度)。下面是一个小例子: $data = "64DA7300 0CD5DFFF"; 我试着去看整数,但我还没有运气 $header = unpack("ilatitud/ilongitude", $data); print_r($header); 我知道正确的数字应该是:(7592548,-2108148),但是结果是1094988854、808465207 有什么想法吗?谢谢 $data = "64DA7300 0CD5

我有一个二进制文件,我正试图解析它。文件的一小部分有一组坐标(纬度和经度)。下面是一个小例子:

$data = "64DA7300 0CD5DFFF";
我试着去看整数,但我还没有运气

$header = unpack("ilatitud/ilongitude", $data);
print_r($header);
我知道正确的数字应该是:
(7592548,-2108148)
,但是结果是
1094988854、808465207

有什么想法吗?谢谢

$data = "64DA7300 0CD5DFFF";
您的数据不是二进制的,而是十六进制编码的ascii。首先将其设置为二进制:

$data = hex2bin(str_replace(" ", "", $data));
那么你的解包就行了


是ADS-B坐标吗?如果我记得正确的话,它们需要的不仅仅是一个普通的十六进制->二进制转换,它们只是GPS坐标,结果需要除以65536才能得到精确的坐标。但是,我的问题是转换..:/<代码>$data=“64DA7300 0CD5DFFF”不是二进制的。@tkausl是的。。。你的意思是?如果你参考我对二进制的评论,你可以了解ADS-B GPS是如何工作的。这是飞机发送到地面告诉他们在哪里的东西。使flightradar工作的东西。因为全尺寸的GPS信号对于飞机来说太大了,所以他们将其压缩为十六进制->二进制->十进制以获得坐标。我的观点是,您试图从一个字符串中解包一个二进制小尾端整数,该字符串包含ascii十六进制的整数。