に変換longしたいint。
long>の値の場合は、int.MaxValueラップアラウンドさせていただきます。
最善の方法は何ですか?
に変換longしたいint。
long>の値の場合は、int.MaxValueラップアラウンドさせていただきます。
最善の方法は何ですか?
するだけです(int)myLongValue。uncheckedコンテキスト (コンパイラの既定値) で、必要なこと (MSB を破棄して LSB を取得) を正確に実行します。値が に収まらない場合は、コンテキストでスローOverflowExceptionされます:checkedint
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)