On Thu, December 29, 2005 5:37 pm, Michael Gross wrote: > Hello > I have to migrate a PHP-application to a new Linux-Box. Both the old > and > the new system are Linux and PHP 5.1.1. (the old one has a Pentium 4, > the new one two Xeon CPUs). I have a problem using the > Crypt_Xtea-Extension. I narrowed it down to the following right-shift > operation: > > (-3281063054 >> 11) produces different results: > Old System: 495070 > New System: -1048576 > > I understand that both results are "wrong", but everything worked with > the old behavior and I need that behavior back very urgent. > > Maybe someone can explain me in which way the bits are shifted so that > the result is 495070? If I understand it, I implement my "own" shift > function. Assuming the previous hypothesis that it's 32-bit versus 64-bit machines at work... If you can determine the number of bits on your system, you could use a different number from 11 on the two systems to get the answer you want. if (is_32_bit_machine()){ $y = $x >> 11; } else{ $y = $x >> 43; //11 + 32 (guess) } One hack for detecting 32-bit machine might be this: function is_32_bit_machine(){ return mt_getrandmax() == 0xffffffff; } I suppose if you're going to do this right, what you REALLY should do is code it to determine the number of bits, no matter how large, and then bit-shift the correct amount based on that. So when the 128-bit machines come out in a few years, you aren't re-coding this same damn problem AGAIN. -- Like Music? http://l-i-e.com/artists.htm -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php