I spent many frustrating days debugging a similar problem. I don't understand exactly what is going on, but it seems that the problems revolve around PHP's treatment of an integer as signed or unsigned.
Through experimentation I determined that the way you specify an integer constant (decimal or hex) with the sign bit on will affect how PHP treats that integer. Try the following: determine the signed decimal equivalents of the two hex integers in your code & replace the hex representations with the decimal "equivalents". So, if I'm remembering correctly (please check my math), the line if ($a > hexdec("ffffffff")) would become if ($a > -1) See if this makes a difference. > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > Sent: Saturday, July 06, 2002 5:54 PM > To: [EMAIL PROTECTED] > Subject: [PHP] Help needed with hexdec(); > > > Hi Guys, > > I have a problem wich I hope has been solved by someone :-) > > Here's the deal, > > I have to convert a perl script to PHP trying to do so > I get negative > values from hexdec(), If I use (int)hexdec() the > numbers aren't negative > anymore, but they do not add up to what they should. > > Here's the perl line: > $a = FF ($a, $b, $c, $d, $temparr[8], $S11, hex("698098d8")); > > > this is PHP: > $a = FF ($a, $b, $c, $d, $temparr[8], $S11, > hexdec("698098d8")); > > FF is a function: > function FF($a,$b,$c,$d,$x,$s,$ac) > { > $a += F($b,$c,$d) + $x + $ac; > if ($a > hexdec("ffffffff")) > { > $a = substr($a,strlen($a)-9,9) ; > } > $a = RL($a,$s); > $a += $b; > return $a; > } > > F is also a function: > function F($x, $y, $z) > { > return ((($x) & ($y)) | ((~$x) & ($z))); > } > > Could anybody tell me what I am missing here? > > e-mail: <mailto:[EMAIL PROTECTED]> [EMAIL PROTECTED] > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php