путаница с unpack

jeno

Новичок
путаница с unpack

есть вот такой кусок кода:

PHP:
$res=array(
array("456546","1111"),
array("655646","1111"),
array("564616","1111"),
array("456456","1111")
);

foreach($res AS $r)
{
$out.=pack("Nn",$r[0],$r[1]);
}
надо разложить $out обратно в массив...

делаю так: (пытаюсь получить хотябы первый под массив )

PHP:
print_r(unpack("Nn",substr($out,0,4)));
в итоге получаю массив в котором: [n] => 456546 но как вытянуть 1111 ?! =\

буду очень признателен если кто-то объяснить что нет так, с бинарными данными в первый раз работаю...сложновато =\
 

Бочонок

http://frontender.info
А что вы вообще пытаетесь таким образом сделать?
Возможно лучше сериализовать массив и уже работать с сериализоваными данными?
 

Макс

Старожил PHPClub
> print_r(unpack("Nn",substr($out,0,4)));
почему 4 ?
N - 32 бита, n - 16 бит (http://ru.php.net/pack)
unpack возвращает ассоциативный массив, поэтому в формате должны присутствовать имена ключей:
print_r(unpack("Nfirst/nsecond",substr($out,0,6)));
 
Сверху