2015-11-17 2 views
1

Мне нужно преобразовать значение float в 4 байта.Преобразование float в массив байтов в PHP

В JavaScript я обычно делаю это с помощью этого кода:

var farr = new Float32Array(1); 
    farr[0] = 26.75; 
    var barr = new Int8Array(farr.buffer); 
    console.log(barr[0]+","+barr[1]+","+barr[2]+","+barr[3]); 
    //26.75 => 0,0,-42,65 
    //26.85 => -51,-52,-42,65 

Я хочу сделать это в PHP, а не JavaScript. Я это возможно?

ответ

2

пытаются использовать pack и unpack функции:

$f = 26.75; 
$ar = unpack("c*", pack("f", $f)); 

print_r($ar); 

Результат:

Array 
(
    [1] => 0 
    [2] => 0 
    [3] => -42 
    [4] => 65 
) 

вы можете найти фрагмент here

+0

Спасибо, но я не получаю то же самое значения с этим кодом, как я получил с javascript. Это вы пробуете мои 2 примера, значения теперь разные: 26.85 дает 205 204 222 65 – Biribu

+2

@Biribu 205 - 256 = 51, то же самое для других чисел, вы должны вычесть числа на 256, если они больше 128, чтобы компенсировать php not давая число, подписанное (или javascript, давая число без знака) – Ferrybig

+0

Perfect. Спасибо, оба. – Biribu