Straightforward conversion from Int <-> Word
Jan-Willem Maessen
jmaessen@alum.mit.edu
Mon, 25 Feb 2002 11:46:03 -0500
I've cast about a bit and haven't been able to find the appropriate
functionality, so I'm asking here.
I'd like to convert Int32 to and from Word32 in the good old-fashioned
bitwise fashion (perserving modular arithmetic). I have the following
code to show what I mean:
intToNat i
| i >= 0 = fromIntegral i
| otherwise = fromIntegral (i - minBound) + negBound
where negBound = fromInteger . negate . toInteger $ (minBound :: Int)
One might think that "intToWord32" and "word32ToInt" in lang/Word
would do what I want---but no! These are depracated, and I must use
fromIntegral, which will only perform the conversion correctly for the
portions of the numeric range which overlap.
How do I do the straightforward conversion module 2^32? I'm sure it's
buried in there somewhere... I can't even turn up an appropriate type
signature, though.
-Jan-Willem Maessen