Markus Fischer wrote:
> Hi,
>
> I'm searching for an efficient way to use unpack on binary data within a
> variable (php 5.1.something). In the past I was doing
>
> fopen
> fseek
> unpack( fread(...)
> fseek
> etc.
>
> Now this time I need to do the same, but I don't have an actual file: my
> data is only in a variable and I don't want to operate on a file but the
> variable within.
>
> I was thinking about using substr() and passing the small chunks of data
> I need to the unpack() function.
>
> Question: does this work without problems on arbitrary binary, maybe
> containing zero-byte values reliable?
Hi Markus,
This does work fine, but beware of strange behavior with unpack() when
using unsigned types V, N, or L. I recently was bitten by different
behavior on 32-bit and 64-bit OSes unpacking a large unsigned integer.
If you need unsigned, use sprintf("%u", $whatever) to get the actual
integer.
substr() works nicely on strings for unpack(), see how PHP_Archive uses
it in http://cvs.php.net/viewvc.cgi/pear/PHP_Archive/Archive.php . If
you are writing for forward compatibility with PHP 6's unicode and plan
to accept input from a variety of sources, you may want to cast the
string to binary type.
Greg
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php