|
Posted by Jerry Stuckle on 02/18/06 19:41
Bruce wrote:
> Consider the following code:
>
> $BB = -2181087916;
> $AA = (int)$BB;
> $AA = intval($BB);
>
> On some systems, $AA will be int(-2147483648), which is actually
> consistent with the documentation.
>
> On most systems, however, $AA will be int(2113879380), which is the
> same value truncated at 32 bits.
>
> I actually need the latter behavior, as it needs to duplicate Delphi
> code, which, like C, behaves the same way.
>
> This is encryption code that does a bunch of calculations on signed
> 32-bit numbers and ignores any overflows.
>
> Any ideas how I can do this?
>
> --Bruce
It's never a good idea to depend on hardware dependent features like the
handling of overflow. They have a tendency to break when you move to a
different hardware platform.
I guess you could do some testing and bit manipulation on it, but that's
adding more complexity to the code (and more chances for it to break).
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
[Back to original message]
|