程序代码:
#include <stdio.h>
#include <string.h>
int mypow(int x,int n)
{
if(n==0) return 1;
int t=1;
for(;n>0;t*=x,n--);
return t;
}
bool hex_check(char* s)
{
bool result=true;
for(;*s!='\0';s++)
{
if(*s<'0' || (*s>'9' && *s<'A') || (*s>'F' && *s<'a') || *s>'f')
{
result=false;
break;
}
}
return result;
}
int conv(char* s)
{
int t=0;
int i=0;
if(hex_check(s))
{
int ln=(int)strlen(s)-1;
for(;ln>=0;ln--,i++)
{
if(s[ln]>='0' && s[ln]<='9') t+=(s[ln]-0x30)*mypow(16,i);
if(s[ln]>='a' && s[ln]<='f') t+=(s[ln]-0x57)*mypow(16,i);
if(s[ln]>='A' && s[ln]<='F') t+=(s[ln]-0x37)*mypow(16,i);
}
}
else return -1;
return t;
}
int main(void)
{
char * b="3456";
char * c="282ABF";
char * d="abCDeF";
printf("\n%s(X)=%d(D)\n",b,conv(b));
printf("%s(X)=%d(D)\n",c,conv(c));
printf("%s(X)=%d(D)\n",d,conv(d));
return 0;
}
欢迎测试