第一次在这里发帖。我有一个从十六进制转换为十进制的任务,包括其他转换,但这个让我很难过......
所以我需要转换的十六进制值是 12345678、2A3DF8A7、00FF00FF。00FF00FF 工作正常,这是给我带来麻烦的数值。
我知道你应该将数字乘以 16^n,但由于某种原因,即使我认为我做得对,我得到的值也太高了。显然不是,因为它不起作用。帮助将不胜感激!
我的代码在过去的一个小时里一直在改变,但这是最后一个“else”,这就是问题所在。
public void toDec()
{
dec = 0;
for (int j = 0, i = 7; j < hex.length(); j++){
if (hex.charAt(j) == 'A') {
dec += (10 * (int)Math.pow(16, i));
}
else if (hex.charAt(j) == 'B') {
dec += (11 * (int)Math.pow(16, i));
}
else if (hex.charAt(j) == 'C') {
dec += (12 * (int)Math.pow(16, i));
}
else if (hex.charAt(j) == 'D') {
dec += (13 * (int)Math.pow(16, i));
}
else if (hex.charAt(j) == 'E') {
dec += (14 * (int)Math.pow(16, i));
}
else if (hex.charAt(j) == 'F') {
dec += (15 * (int)Math.pow(16, i));
}
else if (hex.charAt(j) == '0') {
dec = dec;
}
else {
dec += ((int)hex.charAt(j)) * ((int)Math.pow(16, i));
}
i--;
}
}