ID: 36148 Updated by: [EMAIL PROTECTED] Reported By: andy at advancethermal dot com -Status: Open +Status: Assigned Bug Type: Strings related -Operating System: WinXP, Win2k3 +Operating System: * PHP Version: 5CVS-2006-01-25 (snap) -Assigned To: +Assigned To: iliaa New Comment:
Ilia, verified on Linux too. Previous Comments: ------------------------------------------------------------------------ [2006-01-25 18:53:49] andy at advancethermal dot com The latest CVS (5.1.3-dev built Jan 25 2006 16:19:11) does not correct the problem. ------------------------------------------------------------------------ [2006-01-25 18:22:14] andy at advancethermal dot com Upon further testing, I found the following: CODE: $values = array("a", "aa", "aaa", "aaaa"); foreach ($values as $value) { $a = pack("H*", $value); $b = unpack("H*", $a); echo "<p>".$value.": "; var_dump($b); } ACTUAL RESULT: a: array(1) { [1]=> string(3) "a00" } aa: array(1) { [1]=> string(3) "aa0" } aaa: array(1) { [1]=> string(5) "aaa00" } aaaa: array(1) { [1]=> string(5) "aaaa0" } EXPECTED RESULT: (produced from PHP 5.0.5) a: array(1) { [1]=> string(2) "a0" } aa: array(1) { [1]=> string(2) "aa" } aaa: array(1) { [1]=> string(4) "aaa0" } aaaa: array(1) { [1]=> string(4) "aaaa" } The release notes for 5.1.2 indicate that the problem was fixed, however this does not appear to be the case -- or is a new problem. All scripts that handle binary data using unpack() had to be modified with substr($unpackeddata[1], 0, -1) so it would be properly handled. ------------------------------------------------------------------------ [2006-01-25 00:32:56] [EMAIL PROTECTED] See bug #35817. ------------------------------------------------------------------------ [2006-01-25 00:10:45] andy at advancethermal dot com Sorry, reverse the Expected and Actual Results... ------------------------------------------------------------------------ [2006-01-25 00:09:59] andy at advancethermal dot com Description: ------------ unpack("H*hex", $data) is adding an unexpected extra character to the end of the string. Upgraded to PHP 5.1.2 using Windows Zip package. Reproduce code: --------------- echo "<p>".unpack("H*hex", file_get_contents("c:/php/php.exe")); Try in 5.0.5 and 5.1.2 -- there is a difference. Expected result: ---------------- ...fff90 Actual result: -------------- ...fff9 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=36148&edit=1