C#を使用してint32の最大範囲より大きい大きな数値をint32に変換したい。したがって、最大範囲2147483647を超えている場合は、-2147483648から再び開始されます。今のところ、私はこれを次のようにしています:Int32.Maximum +値の数値をint32に変換する
long val = 3903086636L;
long rem = val % 2147483648L;
long div = val/2147483648L;
int result = div % 2 == 0 ? (int)rem - 1 : -2147483648 + (int)rem;
私はこれを正しく行うと確信しています。 C#でこれを行うためのユーティリティ関数や簡単な方法はありますか?
チェックモードを無効にすると、アプリケーションに影響がありますか? – Arnab
デフォルトでは無効になっています。 –
あるいは 'int i = unchecked((int val);)'と書くことができ、コンパイラの 'checked'設定に関係なく動作します。 –