Как преобразовать целое число в массив байтов в php
как бы преобразовать целое число в массив из 4 байтов?
Вот точный код, который я хочу для порта (в С#)
int i = 123456;
byte[] ar = BitConverter.GetBytes(i);
// ar will contain {64, 226, 1, 0}
Как я буду делать то же самое в PHP?
Ответы
Ответ 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)
}