PHP以大端字节顺序打包/解包浮动

时间:2012-07-29 20:45:51

标签: php floating-point endianness pack

如何使用php以big endian字节顺序打包/解包浮点数? 我用解压缩功能实现了这一点,但我不确定这是否会起作用。

function unpackFloat ($float) {
    $n = unpack ('Nn');
    $n = $n['n'];

    $sign = ($n >> 31);
    $exponent = ($n >> 23) & 0xFF;
    $fraction = $n & 0x7FFFFF;
}

1 个答案:

答案 0 :(得分:4)

在考虑了一段时间后,我找到了一个非常简单的解决方案,使用pack('f')使用的相反字节顺序。

unpack

unpack('fdat', strrev(substr($data, 0, 4)));

pack

strrev(pack('f', $data));