Как использовать функцию pack() ?

Статус
В этой теме нельзя размещать новые ответы.

SXS

Создатель
Регистрация
2 Апр 2008
Сообщения
11
Реакции
0
Мне нужно отправить в бинарном виде строку состоящую из цифр и для этого использую ф-цию pack()
Отправляю так:
PHP:
$str = "5938501203561290"; // это та строка
$str_hex = str_split($nua, 2);
function arr_prefix(&$item,$key,$prefix){
        $item = $prefix.$item;
}
array_walk($str_hex, 'arr_prefix','0x');
$packet = pack('C7', $str_hex[0], $str_hex[1], $str_hex[2], $str_hex[3], $str_hex[4], $str_hex[5], $str_hex[6]);
Но вместо нужной строки отправляется строка из нулей т.е. "00 00 00 00 00 00 00" :confused:
А нужно так "59 38 50 12 03 56 12 90"
Что я делаю не так и как исправить?
 
У вас тут заморочка с шестнадцатиричными и десятичными представлениями. На сколько я понял, прежде чем '0x59' засовывать в pack надо привести его к десятичному формату: hexdec('0x59'), иначе функция считает его строкой.

вот так получается то что нужно (59 38 50 12 03 56 12)

PHP:
$str = "5938501203561290"; // это та строка
$str_hex = str_split($str, 2);
for ($i=0; $i<sizeof($str_hex); $i++) {
	$str_hex[$i] = '0x'.$str_hex[$i];
	$str_hex[$i] = hexdec($str_hex[$i]);
}
$packet = pack('C7', $str_hex[0], $str_hex[1], $str_hex[2], $str_hex[3], $str_hex[4], $str_hex[5], $str_hex[6]);
 
  • Нравится
Реакции: SXS
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху