0

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 進文字列を保持する必要があります。このエラーの原因となっている何らかのオーバーフローがあるのか​​ 、それともアンドロイドでのアクティビティがあるのか​​ はわかりません。

4

1 に答える 1

0

BigDecimal を使用してみませんか。16 進文字列から大きな 10 進数を作成してから、multiple メソッドを使用することができます。

http://www.velocityreviews.com/forums/t126470-no-hexadecimal-parsing-formatting-for-biginteger.htmlを参照してください。

于 2013-08-26T00:45:10.603 に答える