に変換long
したいint
。
long
>の値の場合は、int.MaxValue
ラップアラウンドさせていただきます。
最善の方法は何ですか?
に変換long
したいint
。
long
>の値の場合は、int.MaxValue
ラップアラウンドさせていただきます。
最善の方法は何ですか?
するだけです(int)myLongValue
。unchecked
コンテキスト (コンパイラの既定値) で、必要なこと (MSB を破棄して LSB を取得) を正確に実行します。値が に収まらない場合は、コンテキストでスローOverflowException
されます:checked
int
int myIntValue = unchecked((int)myLongValue);
Convert.ToInt32(myValue);
int.MaxValue より大きい場合はどうなるかわかりませんが。
実際の値ではなく、checksum/hashcodeとしての使用法に興味がある場合があります。この場合、組み込みメソッドGetHashCode()
が適切な選択です。
int checkSumAsInt32 = checkSumAsIn64.GetHashCode();
安全で最速の方法は、キャストする前にビット マスキングを使用することです...
int MyInt = (int) ( MyLong & 0xFFFFFFFF )
Int のサイズはマシンに依存するため、ビット マスク ( 0xFFFFFFFF
) の値は Int のサイズに依存します。
値が整数の範囲外の場合、次のソリューションは int.MinValue/int.MaxValue に切り捨てます。
myLong < int.MinValue ? int.MinValue : (myLong > int.MaxValue ? int.MaxValue : (int)myLong)