我正在添加两个十六进制数字并将它们作为String返回 如何将String值存储到int中?它不适合我。 这是我正在处理的代码。
int A和B没有将num1和num2的字符串作为int,我该怎么办?
public static String Addtion(String num1, String num2){
int sum, carry=0;
int A = num1.length()-1;
int B = num2.length()-1;
String astn="";
if ( B < A && B!= A){
num2 = '0' + num2;
B++;
}
while(B>=0){
sum = (con(num1.charAt(A))+con(num2.charAt(B))+carry)%16;
carry= (con(num1.charAt(A))+con(num2.charAt(B))+carry)/16;
astn = toHexChar(sum) + astn;
A--;
B--;
}
return astn ;
}
答案 0 :(得分:0)
您没有正确处理长度差异。首先,您需要将if
更改为while
,因为长度差异可能会超过1.其次,您的代码只会检查num2
是否短于num1
而你也需要反过来。最后,在加法循环结束后,您忽略了非零进位的可能性。这可能会起到作用:
public static String Addtion(String num1, String num2){
int sum, carry=0;
int A = num1.length()-1;
int B = num2.length()-1;
String astn="";
while (A < B) {
num1 = "0" + num1;
A++;
}
while (B < A) {
num2 = "0" + num2;
B++;
}
while(B>=0){
sum = (con(num1.charAt(A))+con(num2.charAt(B))+carry)%16;
carry= (con(num1.charAt(A))+con(num2.charAt(B))+carry)/16;
astn = toHexChar(sum) + astn;
A--;
B--;
}
if (carry > 0) {
astn = toHexChar(carry) + astn;
}
return astn ;
}
答案 1 :(得分:-1)
如果您的输入是base-16数字的String表示,并且您需要将其转换为(base-10)int
,请使用:
Integer.parseInt(hex, 16);