我可以转换为长整型?
我想将long
int
转换为int
。
如果long
> int.MaxValue
的值,我很乐意让它环绕。
什么是最好的方法?
只要(int)myLongValue
。 它将在unchecked
上下文(这是编译器的默认值)中完成你想要的任务(放弃MSB并采用LSB)。 如果该值不适合int
它将在checked
上下文中抛出OverflowException
:
int myIntValue = unchecked((int)myLongValue);
Convert.ToInt32(myValue);
虽然我不知道什么时候会比int.MaxValue大。
有时候你并没有对实际值感兴趣,而是把它用作校验和/散列码 。 在这种情况下,内置方法GetHashCode()
是一个不错的select:
int checkSumAsInt32 = checkSumAsIn64.GetHashCode();
安全和最快的方法是使用位屏蔽之前铸造…
int MyInt = (int) ( MyLong & 0xFFFFFFFF )
位掩码( 0xFFFFFFFF
)值将取决于Int的大小,因为Int大小取决于机器。