我正在尝试将 2 个十六进制值相乘并接收一个十六进制值作为输出。我目前采用包含十六进制值的字符串,将其转换为整数进行乘法,然后将其转换回十六进制字符串。
这是十进制乘法(以 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 为基数)
//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());
当乘以会导致溢出的较大十六进制值(即:0xFFFFFFFF * 0xFFFFFFF)时,我的 android 应用程序崩溃并且我收到以下错误:
FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method of the activity
我需要displayValue
保存一个十六进制字符串(如果转换为数字),其大小为 int。我不确定是否存在某种溢出导致此错误,或者其他与 android 中的活动有关的东西。