我编写了一个程序,使用以下代码将十六进制数转换为其等效的二进制形式,但我得到了错误的结果。代码如下:
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 的数组更改为 String 类型时,它给了我确切的答案。
是因为编译器将整数数组中的数字视为某种形式的八进制数,还是因为其他原因?