如何在使用长度时将String值保存为Int值?

时间:2015-12-21 18:51:59

标签: java string int hex

我正在添加两个十六进制数字并将它们作为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 ;
}

2 个答案:

答案 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);