在PHP中读取小端的十进制值

时间:2015-06-02 23:55:57

标签: php

我正在使用

从二进制文件中读取小端的6个字节
$data = fread($fp, 6);
unpack("V", $data);

结果是1152664389,在HEX中它是0x44B44345

现在这个结果是小端,并且有一个十进制数。在Delphi中,我能够使用此函数获取十进制数:

var
myint:integer;
s:single;
begin
myint:= 1152664389; // same as myint:= $44B44345;
s:= PSingle(@myint)^;

并且s的输出是1442.102 ..这正是我正在寻找的数字......

我在PHP中搜索了一种方法,但我迷路了。

请帮忙,

由于

1 个答案:

答案 0 :(得分:0)

好的,我有点困惑。我想从二进制文件中实际检索一个小端数,然后将其转换为float。

所以我的步骤是:

1)读取字节并使用$ number = unpack解压缩(" V",$ data); 2)使用dechex将$ number转换为十进制。 3)然后使用以下函数将hex转换为float:

function hexTo32Float($strHex) {
$v = hexdec($strHex);
$x = ($v & ((1 << 23) - 1)) + (1 << 23) * ($v >> 31 | 1);
$exp = ($v >> 23 & 0xFF) - 127;
return $x * pow(2, $exp - 23);
}

再次感谢。