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

Тема в разделе "PHP", создана пользователем SXS, 23 дек 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. SXS

    SXS Создатель

    Регистр.:
    2 апр 2008
    Сообщения:
    11
    Симпатии:
    0
    Мне нужно отправить в бинарном виде строку состоящую из цифр и для этого использую ф-цию pack()
    Отправляю так:
    PHP:
    $str "5938501203561290"// это та строка
    $str_hex str_split($nua2);
    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"
    Что я делаю не так и как исправить?
     
  2. lucky_priest

    lucky_priest Создатель

    Регистр.:
    16 ноя 2009
    Сообщения:
    20
    Симпатии:
    7
    У вас тут заморочка с шестнадцатиричными и десятичными представлениями. На сколько я понял, прежде чем '0x59' засовывать в pack надо привести его к десятичному формату: hexdec('0x59'), иначе функция считает его строкой.

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

    PHP:
    $str "5938501203561290"// это та строка
    $str_hex str_split($str2);
    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 нравится это.
Статус темы:
Закрыта.