Конвертировать float в массив байтов в PHP

1

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

В 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. Я это возможно?

Теги:
floating-point
pack
unpack

1 ответ

2
Лучший ответ

попробуйте использовать функцию pack и unpack:

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

print_r($ar);

Результат:

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

вы можете найти фрагмент здесь

  • 0
    Спасибо, но я не получаю те же значения с этим кодом, как я получил с JavaScript. Если вы попробуете мои 2 примера, значения теперь разные: 26,85 дает 205 204 222 65
  • 2
    @Biribu 205 - 256 = 51, то же самое для других чисел, вы должны вычесть числа на 256, если они больше 128, чтобы компенсировать, что php не дает число со знаком (или javascript дает число без знака)
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню