【发布时间】:2016-04-02 13:38:35
【问题描述】:
我有我认为是单精度或双精度的 IEEE754(不确定),我想在 PHP 上将其转换为十进制。
给定 4 个十六进制值(可能是小端格式,所以基本上是颠倒的顺序)4A,5B,1B,05 我需要将其转换为十进制值,我知道它会非常接近4724.50073。
我尝试了一些在线转换器,但它们与预期的结果相去甚远,所以我显然遗漏了一些东西。
如果我echo 0x4A; 我得到74 而其他人是91、27 和5。不知道从哪里拿它...
【问题讨论】:
-
您拥有的确切数据是什么?
-
@cmorrissey 它们应该是 GPS 坐标,文档中的描述说
All floating point values are transmitted in IEEE754 single or double precision然后我得到这些确切的值4A,5B,1B,05我知道它是4724.50073,只是不知道如何到达那里。 -
你确定你给出的十六进制值和十进制值的对应关系吗?我看到在 4724.50073 的二进制表示中,有三个连续的 1 数字,无论你是否在点后面取小数。并且无论您如何排序,十六进制数字中都没有这样的二进制数字序列。
-
您能否向我们提供您正在处理的邮件的具体文档?
-
如果它是小端,我不得不想知道为什么指数这么小。如果它是大端,快速访问binaryconvert.com/convert_float.html 会发现它不是您所期望的。此外,由于这些是坐标,您可能会认为它们具有不同的表示形式(例如 dº m's")