我认为它是具有单精度或双精度的IEEE754(不确定),我想在PHP上将其转换为十进制。
给定4个十六进制值(可能是小端格式,所以基本上是颠倒顺序)4A,5B,1B,05
我需要将它转换为十进制值,我知道它将非常接近4724.50073
。< / p>
我尝试了一些在线转换器,但它们远远没有达到预期效果,所以我显然遗漏了一些东西。
如果我echo 0x4A;
我得到74
,而其他人则是91
,27
和5
。不知道从哪里拿走它......
答案 0 :(得分:2)
要将其转换为float,请使用unpack
。如果字节顺序不正确,您必须在解包前自行撤消。 4个字节(32位)通常表示它是一个浮点数,8表示双倍。
$bin = "\x4A\x5B\x1B\x05";
$a = unpack('f', strrev($bin));
echo $a[1]; // 3589825.25
我没有看到任何方式直接映射到4724.50073
。如果没有更多的测试数据或制造商的手册,这个问题就不能完全回答。
推测:从坐标的大小来判断它可能是某种投影(XYZ或墨卡托),然后可以将其转换为WGS84或任何你需要的东西。不幸的是,由于您还没有提供纬度和经度,因此无法检查。