web-dev-qa-db-ja.com

longをintに変換できますか?

longintに変換したい。

long> int.MaxValueの値の場合、ラップアラウンドさせていただきます。

最善の方法は何ですか?

133
inspite

(int)myLongValueを実行してください。 uncheckedコンテキスト(コンパイラーのデフォルト)で、必要なこと(MSBの破棄とLSBの取得)を正確に行います。値がOverflowExceptionに収まらない場合、checkedコンテキストでintをスローします。

int myIntValue = unchecked((int)myLongValue);
204
Mehrdad Afshari
Convert.ToInt32(myValue);

Int.MaxValueより大きい場合はどうなるかわかりませんが。

31
Max Schmeling

実際の値に実際に興味がなくても、checksum/hashcodeとしての使用に興味がある場合があります。この場合、組み込みメソッドGetHashCode()が適切な選択です。

int checkSumAsInt32 = checkSumAsIn64.GetHashCode();
15
realbart

安全で最速の方法は、キャストする前にビットマスキングを使用することです...

int MyInt = (int) ( MyLong & 0xFFFFFFFF )

Intサイズはマシンに依存するため、ビットマスク(0xFFFFFFFF)値はIntのサイズに依存します。

7
Mashake

しません

(int) Math.Min(Int32.MaxValue, longValue)

数学的に言えば、正しい方法ですか?

0
Rémy Esmery