我可以长期转换为int吗?
-
21-08-2019 - |
题
我想转换 long
至 int
.
如果价值 long
> int.MaxValue
, ,我很乐意让它包裹起来。
什么是最好的方法?
解决方案
做就是了 (int)myLongValue
. 。它将完全做您想要的(丢弃MSB并服用LSB) unchecked
上下文(这是编译器默认值)。它会投掷 OverflowException
在 checked
上下文如果该值不适合 int
:
int myIntValue = unchecked((int)myLongValue);
其他提示
Convert.ToInt32(myValue);
尽管我不知道它比int.maxvalue大。
有时您实际上对实际价值不感兴趣,而是对 校验和哈希码. 。在这种情况下,内置方法 GetHashCode()
是一个不错的选择:
int checkSumAsInt32 = checkSumAsIn64.GetHashCode();
安全,最快的方法是在铸造之前使用位掩码...
int MyInt = (int) ( MyLong & 0xFFFFFFFF )
位掩码( 0xFFFFFFFF
)值将取决于INT的大小,因为INT大小取决于机器。
不会
(int) Math.Min(Int32.MaxValue, longValue)
从数学上讲是正确的方法?
不隶属于 StackOverflow