Edit report at https://bugs.php.net/bug.php?id=39588&edit=1
ID: 39588 Comment by: su dot hang at yahoo dot com Reported by: pprasse at actindo dot de Summary: unpack("a*", "abc\0") does not work as expected Status: Not a bug Type: Bug Package: Strings related Operating System: linux 2.6.10 PHP Version: 4.4.4 Block user comment: N Private report: N New Comment: is this also expected behavior? <?php $var = "str"; $packed = pack("a5", $var); // 5 bytes long NULL-padded string var_dump(unpack("a5", $packed)); array(1) { [1]=> string(3) "str" } Previous Comments: ------------------------------------------------------------------------ [2006-11-22 14:23:04] tony2...@php.net Expected behaviour. $var = "str"; $packed = pack("a5", $var); // 5 bytes long NULL-padded string var_dump(unpack("a*", $packed)); // the NULL-padding is removed to get the original data. ------------------------------------------------------------------------ [2006-11-22 14:09:26] pprasse at actindo dot de Description: ------------ unpack( "a*", $string ) does not work as expected when last character of $string is "\0" Reproduce code: --------------- <?php $string = "abc\0"; $arr = unpack( "a*buf", $string ); printf( "strlen = %d\n", strlen($arr['buf']) ); printf( "hex dump:\t" ); for( $i=0; $i<strlen($arr['buf']); $i++ ) printf( " %02x", ord($arr['buf']{$i}) ); printf( "\n" ); ?> Expected result: ---------------- strlen = 4 hex dump: 61 62 63 00 Actual result: -------------- strlen = 3 hex dump: 61 62 63 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=39588&edit=1