On 29 February 2016 at 07:43, Dmitry Stogov <dmi...@zend.com> wrote: > I think the most clear way is to apply the new $offset argument and then the > old way to skip first bytes of input string. > So unpack("@$skip/N4", $message, $offset) will skip $offset+$skip. > Actually, this is the way how the proposed patch works. > > Thanks. Dmitry. > > > ________________________________________ > From: Leigh <lei...@gmail.com> > Sent: Thursday, February 25, 2016 18:20 > To: Dmitry Stogov > Cc: Nikita Popov; internals@lists.php.net; Hynek Bartoš > Subject: Re: [PHP-DEV] Fw: unpack() > > On 25 February 2016 at 13:02, Dmitry Stogov <dmi...@zend.com> wrote: >> >> I've just got to know about possible usage of "@" in unpack(), but it seems >> doesn't work at all >> >> $ sapi/cli/php -r 'var_dump(unpack("@0l", "\x01\x00\x00\x00")); ' >> array(0) { >> } >> >> Do I use it properly? >> >> Thanks. Dmitry. >> > > As Nikita said, you need the "/". I use this operator when processing > streams of binary data. > > Trimmed down example: > > while ($blocks--) { > list(, $x0, $x1, $x2, $x3) = unpack("@$offset/N4", $message); > //... > $offset += 16; > } > > The dynamic format string is kind of nasty though, so no objections to > an additional parameter making things clearer, however, what is to be > done if an offset is specified in both the format string and the > additional parameter? Does one override the other? Are they additive?
Hi Dmitry, I noticed this is half implemented. You have committed some changes to unpack to cater for the offset argument, but arginfo_unpack was never updated. What was the intention with this? Cheers, Leigh. -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php