我有两种方法,binToDec
将二进制中的用户输入转换为十进制,将decToHex
转换为十进制转换为十六进制。
public static int binToDec(int num){
int result = 0;
int exp = 0;
while(num != 0){
int x = num %10;
result += x *Math.pow(2,exp);
exp++;
num = num / 10;
}
return result;
}
public static String decToHex(int num){
String result = "";
int n = num;
int remainder = n % 16;
if (n == 0) {
return "";
} else {
switch (remainder) {
case 10:
result = "A";
break;
case 11:
result = "B";
break;
case 12:
result = "C";
break;
case 13:
result = "D";
break;
case 14:
result = "E";
break;
case 15:
result = "F";
break;
default:
result = remainder + result;
break;
}
String finalResult = decToHex(n/ 16 ) + result;
return finalResult;
}
}
问题是当我创建一个名为binToHex
的新方法将二进制转换为十六进制时,当我将它与在线转换器进行比较时,结果会有所不同。我只从上面调用了方法。这是我的binToHex
。
public static String binToHex(int num) {
int binToDec = binToDec(num);
String result = decToHex(num);
return result;
}
例如:当我在binToHex
中输入 1011 时,我的结果为 3F3 但是,当我首先输入<在binToDec
上强> 1011 ,然后在binToDec
上使用decToHex
的结果,我得到 B ,这是正确答案。当我把它们放在方法中时为什么会有所不同?
答案 0 :(得分:0)
实际上这只是一个小错误。您应该String result = decToHex(num);
而不是String result = decToHex(binToDec);
。如您所见,您要求的是1011(十进制)的十六进制,即3F3。
答案 1 :(得分:0)
你有一个拼写错误,decToHex(num)
应该是decToHex(binToDec)
,所以你在第二个函数中使用第一个函数的结果。
public static String binToHex(int num) {
int binToDec = binToDec(num);
String result = decToHex(binToDec); // Typo was here
return result;
}
答案 2 :(得分:0)
您在decToHex
而不是binToDec
中调用num,这就是您输出错误的原因。只是一个错字。