Я написал программу для преобразования шестнадцатеричного числа в эквивалентную двоичную форму с использованием следующего кода, но я получил неправильные результаты. Код выглядит следующим образом:Почему я получаю неправильный вывод
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, он дает мне точный ответ.
Это потому, что компилятор обрабатывает числа в массиве целых чисел как одну из восьми восьмеричных чисел или это связано с какой-то другой причиной?
Спасибо, что помогли мне Грег –