2 つの Hex 値を掛け合わせて、出力として Hex 値を取得しようとしています。現在、16 進値を含む文字列を取得し、それを整数に変換して乗算し、16 進文字列に変換し直しています。
これは、10 進数 (基数 10) で乗算する例です。
//this works for all cases
//operand1, operand2 & displayValue are strings that should be any value from 0-F
long solutionInt = 0;
int currentBase = 10;
solutionInt = Integer.parseInt(operand1, currentBase) * Integer.parseInt(operand2, currentBase);
displayValue = Integer.toString(Integer.valueOf(Long.toString(solutionInt)).intValue());
これは私が問題を抱えているところです.16進数で乗算します(基数16)
//this does NOT work for larger numbers (that would overflow)
//operand1, operand2 & displayValue are strings that should be and value from 0-F
long solutionInt = 0;
int currentBase = 16;
solutionInt = Integer.parseInt(operand1, currentBase) * Integer.parseInt(operand2, currentBase);
displayValue = Integer.toHexString(Integer.valueOf(Long.toString(solutionInt)).intValue());
オーバーフローを引き起こす大きな 16 進数値 (つまり、0xFFFFFFFF * 0xFFFFFFF) を乗算すると、Android アプリがクラッシュし、次のエラーが表示されます。
FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method of the activity
displayValue
(数値に変換された場合) サイズが int になる 16 進文字列を保持する必要があります。このエラーの原因となっている何らかのオーバーフローがあるのか 、それともアンドロイドでのアクティビティがあるのか はわかりません。