我正在使用
从二进制文件中读取小端的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中搜索了一种方法,但我迷路了。
请帮忙,
由于
答案 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);
}
再次感谢。