Подтвердить что ты не робот

Как преобразовать целое число в массив байтов в php

как бы преобразовать целое число в массив из 4 байтов?

Вот точный код, который я хочу для порта (в С#)

int i = 123456;
byte[] ar = BitConverter.GetBytes(i);
// ar will contain {64, 226, 1, 0}

Как я буду делать то же самое в PHP?

4b9b3361

Ответ 1

эквивалентное преобразование

$i = 123456;
$ar = unpack("C*", pack("L", $i));

Посмотрите на действие.

Вы должны знать, что порядок байтов (маленький/большой endian) зависит от архитектуры машины (как и в случае BitConverter). Это может быть или не быть хорошо.

Ответ 2

Поскольку эквивалент байтового массива в PHP является строкой, это будет делать:

$bytes = pack('L', 123456);

Чтобы визуализировать это, используйте bin2hex:

echo bin2hex($bytes);
// 40e20100
// (meaning 64, 226, 1, 0)

Ответ 3

$i = 123456;
$byte_array = unpack('C*', $i);

var_dump($byte_array);
array(6) {
  [1]=>
  int(49)
  [2]=>
  int(50)
  [3]=>
  int(51)
  [4]=>
  int(52)
  [5]=>
  int(53)
  [6]=>
  int(54)
}