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

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

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

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

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

3 ответа

Решение

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

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

Смотрите это в действии.

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

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

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

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

echo bin2hex($bytes);
// 40e20100
// (meaning 64, 226, 1, 0)
$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)
}
Другие вопросы по тегам