Edit report at https://bugs.php.net/bug.php?id=61038&edit=1

 ID:                 61038
 Updated by:         cataphr...@php.net
 Reported by:        su dot hang at yahoo dot com
 Summary:            unpack("a5", "str\0") does not work as expected
-Status:             Open
+Status:             Not a bug
 Type:               Bug
 Package:            *General Issues
 Operating System:   Linux (3.0.0-15-generic)
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

I don't see anything wrong here. 

unpack("a5", "foo\0\0")

removes the NULL padding from the input string. The 5 specifies only the size 
of the input to consume:

php > var_dump(unpack("a5", "foo\0"));
PHP Warning:  unpack(): Type a: not enough input, need 5, have 4 in php shell 
code on line 1


Previous Comments:
------------------------------------------------------------------------
[2012-02-10 09:20:26] su dot hang at yahoo dot com

Description:
------------
related bug: https://bugs.php.net/bug.php?id=39588

if unpacking from a binary string ending with any number of "\0"'s, and the 
unpack string length is given, the resulted string does not have the right 
length. 

for example, unpack("a5", "str\0") should result in a 5-byte-long string, but 
it returns a 3-byte-long instead. 

Test script:
---------------
<?php
$var = "str";
$packed = pack("a5", $var); // 5 bytes long NULL-padded string
var_dump(unpack("a5", $packed));


Expected result:
----------------
array(1) {
  [1]=>
  string(5) "str\0\0"
}

Actual result:
--------------
array(1) {
  [1]=>
  string(3) "str"
}


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=61038&edit=1

Reply via email to