Can I convert long to int?
I want to convert long
to int
.
If the value of long
> int.MaxValue
, I am happy to let it wrap around.
What is the best way?
Solution 1:
Just do (int)myLongValue
. It'll do exactly what you want (discarding MSBs and taking LSBs) in unchecked
context (which is the compiler default). It'll throw OverflowException
in checked
context if the value doesn't fit in an int
:
int myIntValue = unchecked((int)myLongValue);
Solution 2:
Convert.ToInt32(myValue);
Though I don't know what it will do when it's greater than int.MaxValue.
Solution 3:
Sometimes you're not actually interested in the actual value, but in its usage as checksum/hashcode. In this case, the built-in method GetHashCode()
is a good choice:
int checkSumAsInt32 = checkSumAsIn64.GetHashCode();