我写了一个程序,使用下面的代码将十六进制数转换为其等效的二进制形式,但我得到了错误的结果。代码如下:为什么我得到错误的输出
public String convert(String num){
String res="";
int []hex={0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111};
int i;
char ch;
for(i=0;i<num.length();i++)
{
ch=num.charAt(i);
if(ch>='a' && ch<='f'){
res+=hex[ch-97+10]+"";
}
else if(ch>='A' && ch<='F'){
res+=hex[ch-65+10]+"";
}
else if(ch>='0' && ch<='9'){
int d=ch-48;
res+=hex[d]+"";
}
}
return res;
}
如果我给样品输入为“12AE”,那么我得到相应的输出为“1810101110”。 只有在输入字段中有数字并且对所有字符都适用时才会发生(出错)。但是当我将名为hex的数组更改为字符串类型时,它给了我确切的答案。
是因为编译器将整数数组中的数字视为八进制数的某种形式还是因为其他原因?
谢谢你帮我出格雷格 – 2012-04-14 06:02:44