将IEEE 754转换为十进制浮点

mat*_*att 8 php hex decimal ieee-754

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

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

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

如果我echo 0x4A;得到74了,其他人都是91,27而且5.不知道从哪里拿走它......

tos*_*-cx 2

要将其转换为浮点数,请使用unpack. 如果字节顺序不正确,您必须在解包之前自行反转它。4 字节(32 位)通常表示它是浮点型,8 表示双精度型。

$bin = "\x4A\x5B\x1B\x05";
$a = unpack('f', strrev($bin));
echo $a[1];  // 3589825.25
Run Code Online (Sandbox Code Playgroud)

我不知道这如何4724.50073直接映射到。如果没有更多的测试数据或制造商手册,这个问题就无法完全回答。

推测:从坐标的大小来看,它可能是某种投影(XYZ 或墨卡托投影),然后可以将其转换为 WGS84 或您需要的任何投影。不幸的是,由于您没有提供纬度和经度,因此无法进行检查。