Функция PHP Pack не любит строку

Нужна помощь с функцией pack() в PHP. Документы над моей головой.

У меня есть следующий код:

$arr_upc = array();
 if ($user_pass_code !== '' )
 {
 $arr_upc = str_split($user_pass_code); // Split provided pass code into char array for building the command
 }else{
 $arr_upc = str_split('0000'); // Provide an invalid code by default
 }

 //$arr_upc[0], $arr_upc[1], $arr_upc[2], $arr_upc[3]
 $num1 = '0x0' . $arr_upc[0];
 $num2 = '0x0' . $arr_upc[1];
 $num3 = '0x0' . $arr_upc[2];
 $num4 = '0x0' . $arr_upc[3];

 $cmd = pack("C*", 0x78, 0x08, 0x10, 0x00, 0x08, 0x01, 0x05, 0x00, 0x0E, 0x53);

 //$cmd = pack("C*", 0x78, 0x08, 0x10, 0x00, $num1, $num2, $num3, $num4, 0x0E, 0x53); // WHAT I'D LIKE TO USE BUT NOT WORKING

Когда я использую его так: $ cmd = pack ("C *", 0x78, 0x08, 0x10, 0x00, 0x08, 0x01, 0x05, 0x00, 0x0E, 0x53);

Он работает нормально.

Когда я пытаюсь заменить некоторые элементы в этом списке на строковую переменную, он терпит неудачу: $ cmd = pack ("C *", 0x78, 0x08, 0x10, 0x00, $ num1, $ num2, $ num3, $ num4, 0x0E, 0x53); // Ошибка

Я предполагаю, что пакет не нравится или мне нужно преобразовать это во что-то, прежде чем вводить его в функцию, но я потерялся сейчас.

1 ответ

попробуйте это изменение:

$num1 = 0+'0x'.$arr_upc[0];
$num2 = 0+'0x'.$arr_upc[1];
$num3 = 0+'0x'.$arr_upc[2];
$num4 = 0+'0x'.$arr_upc[3];

licensed under cc by-sa 3.0 with attribution.