[PHP] Передача бинарной строки

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
avalon
рядовой
Сообщения: 41
Зарегистрирован: 2008-01-24 18:09:47
Откуда: Украина

[PHP] Передача бинарной строки

Непрочитанное сообщение avalon » 2011-03-30 8:40:43

Здравствуйте. Возникла необходимость передачи массива через бинарную строку во внешнюю программу, опыта работы с бинарными строками нет, пробовал pack() unpack() - не очень то и получается, вернее получается упаковать, а вот распаковать так как нужно не получается. Передача данных будет из юникс в винду. Массив имеет такую структуру:

Код: Выделить всё

$array = row(
              'field1' => 1,
              'field2' => '30.03.2011',
              'field3' => 1
             );

Спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PHP] Передача бинарной строки

Непрочитанное сообщение hizel » 2011-03-30 11:55:27

покажите как вы пакуете и распаковываете
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

avalon
рядовой
Сообщения: 41
Зарегистрирован: 2008-01-24 18:09:47
Откуда: Украина

Re: [PHP] Передача бинарной строки

Непрочитанное сообщение avalon » 2011-03-31 13:51:53

Решено. Может кому и пригодиться, вот пример:

Код: Выделить всё

function pack_array($p_array){
    $l_bin = '';
    foreach ($p_array as $value) {
      if(is_int($value)) $l_bin .= pack('I', $value);
      elseif(is_string($value)) $l_bin .= pack('A'.strlen($value), $value);
    }
   if($l_bin) return $l_bin;
   else return FALSE;
}

$row= array(
              'field1' => 1,
              'field2' => '30.03.2011',
              'field3' => 1
             );

$bin = pack_array($row);

$row1 = unpack('I1field1/A10field2/I1field3', $bin);

var_dump($row);

var_dump($row1);