3

PHPでフロートをビッグエンディアンのバイトオーダーでパック/アンパックするにはどうすればよいですか? unpack 関数でここまでたどり着きましたが、これが機能するかどうかはわかりません。

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

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

2 に答える 2

5

しばらく考えた後、私は非常に簡単な解決策を見つけました.1とは逆のバイトオーダーをpack('f')使用することです.

unpack

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

pack

strrev(pack('f', $data));
于 2012-07-30T12:47:32.860 に答える