我已经写了这个半htoi函数在c,它采用一个十六进制字符串,并将其变成十六进制int。写作函数htoi的逻辑错误
*如果我解决这个问题,我可以把它转化为现实htoi功能
#include<stdio.h>
int main(void)
{
char c;
int a = 0x0;
//a += 1;if do this, we have added 1 to 0 hexadecimal
while((c = getchar()) != '`')
{
if((c >= '0') && (c <= '9')){
a = a * 16 + (c - '0');
printf("a is:%x c:%c\n", a, c);
}
else if((c >= 'a') && (c <= 'f')){
a = a * 16 + c;
printf("a is:%x c:%c\n", a, c);
}
else if((c >= 'A') && (c <= 'F')){
a = a * 16 + c;
printf("a is:%x c:%c\n", a, c);
}
}
printf("\nyour hexa number is:\n%hhx\n", a);
return 0;
}
,但它不能正常工作,而如果我改变 a = a * 16 + c
到 a = a * 10 + c
和 int a = 0x0
到 int a = 0
它作为atoi工作
第二和第三种情况下不转字母成若干 –
第三情况下,不这样做正确的。 'a = a * 16 + c -'a'+ 10' –
plz给我正确的代码 – arianpress