From:             [EMAIL PROTECTED]
Operating system: windows NT 4 (sp 4 or 5)
PHP version:      4.0.4pl1
PHP Bug Type:     *Function Specific
Bug description:  bin2hex() outputs non-hex digits

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









 


-- 
Edit Bug report at: http://bugs.php.net/?id=9366&edit=1



-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to