PHP 4.0 Bug #9366 Updated: bin2hex() outputs non-hex digits

From: Date: Tue, 10 Apr 2001 14:07:33 +0000
Subject: PHP 4.0 Bug #9366 Updated: bin2hex() outputs non-hex digits
Groups: php.dev 
Request: Send a blank email to php-dev+get-51321@lists.php.net to get a copy of this message
ID: 9366 Updated by: sniper Reported By: gdambrosio@cspnet.it Old-Status: Feedback Status: Closed Bug Type: *Function Specific Assigned To: Comments: No feedback. If this happens also with soon to be released PHP 4.0.5, reopen this bug report. --Jani Previous Comments: --------------------------------------------------------------------------- [2001-02-27 08:00:38] stas@php.net As you see, I wrote this comment on Feb. 22th, so please try more recent version. --------------------------------------------------------------------------- [2001-02-27 07:52:14] gdambrosio@cspnet.it I've tryed the 4.0.5-dev from www.php4win.de released on 20 febr. and I've got the same result; I'll work on compiling the latest CVS.. --------------------------------------------------------------------------- [2001-02-22 05:39:04] stas@php.net Please see if current CVS snapshot fixes the problem. --------------------------------------------------------------------------- [2001-02-21 07:33:16] gdambrosio@cspnet.it I've just found that the "reconstrunction" not ever works; only the rewrite/reread technique does; bye again --------------------------------------------------------------------------- [2001-02-21 06:59:31] gdambrosio@cspnet.it it seems an unpredictable problem, I couldn't reproduce it with a string as input: I've attached a base64_encoded file containg the suitable binary data (I'm sorry it there was a simpler way); I'm still not completely sure if it is due to bin2hex() or strstr(), but this latter is very unlikely; this is the script: just change the fopen() with the filename you want; <?php $f1 = fopen( 'c:\temp\--->filename.bin','rb'); //open the attached file $s = fread( $f1, 500000 ); //read it all fclose($f1); $s2= bin2hex($s); echo "lung s2=".strlen($s2)."<br><br>"; // displays correctly filesize()*2, that is 4412 * 2 echo "s2=<<<$s2>>><br><br>"; /* M$'IE5 displays not writeble characters: tryign to select the end of the string, I get evermore of it (just while I'm selecting !) but this should be a M$'bug; Netscape 4.03 works properly; */ $ris= strstr( $s2, "0d0a0d0a") ; // I'm looking for the first occurrence of that string; I know it is on position x0176 // -----> here's the problem: echo "lung ris= ".strlen($ris). "<br><br>"; // I get variable results, between 8077 and 8083 echo "ris=$ris<br><br>"; /* I get again not writeble or "invisible" characters in IE5; on Netscape I get (eg) "04ffd9R" at the end of the string; */ ?> and this is the file (base64_encoded): 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 some ways to work around the problem are: rewriting and re-reading the output of bin2hex; or reconstructing the string piece by piece, with something like [$s2 is bin2hex' output] : for ($i=0; $i < strlen($s2); $i=$i+100 ) { $ricostr = $ricostr.substr($s2,$i, 100); } in both cases, the next step of the script (that looks for "0d0a0d0a") works right; I've looked into the string.c but it seems fine, I don't know what to think; thank you for any help, contact me if you need more infos, bye, Giuse --------------------------------------------------------------------------- The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online. ATTENTION! Do NOT reply to this email! To reply, use the web interface found at http://bugs.php.net/?id=9366&edit=2

« previous php.dev (#51321) next »