longをintに変換できますか?
-
21-08-2019 - |
質問
long
をint
に変換したい。
long
> int.MaxValue
の値があれば、それをラップアラウンドさせていただきます。
最善の方法は何ですか?
解決
(int)myLongValue
を実行するだけです。これは、unchecked
コンテキスト(コンパイラのデフォルト)で必要な処理(MSBの破棄とLSBの取得)を正確に実行します。値がOverflowException
に収まらない場合は、checked
コンテキストでint
をスローします:
ジェネラコディセタグプレ
他のヒント
ジェネラコディセタグプレ
int.MaxValueよりも大きい場合にどうなるかはわかりませんが。
実際の値ではなく、チェックサム/ハッシュコードとしての使用法に関心がある場合があります。この場合、組み込みメソッドGetHashCode()
が適切な選択です:
ジェネラコディセタグプレ
安全で最速の方法は、キャストする前にビットマスキングを使用することです... ジェネラコディセタグプレ
Intのサイズはマシンに依存するため、ビットマスク(0xFFFFFFFF
)の値はIntのサイズに依存します。
しません ジェネラコディセタグプレ
数学的に言えば、正しい方法ですか?
所属していません StackOverflow