PHP упаковывает/распаковывает с плавающей запятой в порядке байтов с обратным порядком байтов

Как я могу упаковать/распаковать поплавки в порядке байтов с обратным порядком байтов с помощью php? Я зашел так далеко с функцией распаковки, но я не уверен, что это вообще сработает.

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

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

person 19greg96    schedule 29.07.2012    source источник


Ответы (1)


Подумав некоторое время, я нашел довольно простое решение — использовать порядок байтов, противоположный тому, который использует pack('f').

unpack

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

pack

strrev(pack('f', $data));
person 19greg96    schedule 30.07.2012