我想要将long
转换为int
。
如果long
的值> int.MaxValue
,我很乐意让它回绕。
最好的方法是什么?
发布于 2009-05-13 16:17:05
做(int)myLongValue
就行了。它将在unchecked
上下文(这是编译器的默认设置)中执行您想要的操作(丢弃MSB并获取LSB)。如果值不适合int
,它将在checked
上下文中抛出OverflowException
int myIntValue = unchecked((int)myLongValue);
发布于 2009-05-13 16:17:52
Convert.ToInt32(myValue);
虽然我不知道当它比int.MaxValue更大的时候它会做什么。
发布于 2014-08-21 13:35:47
最安全和最快的方法是在强制转换之前使用位掩码...
int MyInt = (int) ( MyLong & 0xFFFFFFFF )
位掩码( 0xFFFFFFFF
)值将取决于Int的大小,因为Int的大小取决于机器。
https://stackoverflow.com/questions/858904
复制相似问题