将IEEE 754转换为十进制浮点

时间:2015-12-28 17:34:34

标签: php hex decimal ieee-754

我认为它是具有单精度或双精度的IEEE754(不确定),我想在PHP上将其转换为十进制。

给定4个十六进制值(可能是小端格式,所以基本上是颠倒顺序)4A,5B,1B,05我需要将它转换为十进制值,我知道它将非常接近4724.50073。< / p>

我尝试了一些在线转换器,但它们远远没有达到预期效果,所以我显然遗漏了一些东西。

如果我echo 0x4A;我得到74,而其他人则是91275。不知道从哪里拿走它......

1 个答案:

答案 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或任何你需要的东西。不幸的是,由于您还没有提供纬度和经度,因此无法检查。