我想转换 longint.

如果价值 long > int.MaxValue, ,我很乐意让它包裹起来。

什么是最好的方法?

有帮助吗?

解决方案

做就是了 (int)myLongValue. 。它将完全做您想要的(丢弃MSB并服用LSB) unchecked 上下文(这是编译器默认值)。它会投掷 OverflowExceptionchecked 上下文如果该值不适合 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)

从数学上讲是正确的方法?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top