其实很简单,16进制数存储在字符数组里,以16为倍数从前遍历到最后,以 ‘\0’结尾递增,上代码:
#include<stdio.h>
int trans(char a[])
{
int i=0,n=0;
for(i;a[i]!='\0';i++)
{
if(a[i]>='0'&&a[i]<='9')
n=n*16+a[i]-'0';
else if(a[i]>='a'&&a[i]<='f')
n=n*16+a[i]-'a'+10;
else if(a[i]>='A'&&a[i]<='F')
n=n*16+a[i]-'A'+10;
}
return n;
}
int main()
{
int i=0,n;
char a[20],ch;
while((ch=getchar())!='\0')
{
if((ch>='0'&&ch<='9')||(ch>='a'&&ch<='f')||(ch>='A'&&ch<='F'))
{
a[i++]=ch;
}
else
{
a[i]='\0';
n=trans(a);
printf("%d\n",n);
break;
}
}
return 0;
}