分享自己写的16进制到10进制的两种方法(已验证)
法一:#include<stdio.h>
#include<math.h>
void main()
{unsigned n,k,m=0;int i;
scanf("%x",&n);
printf("%x,%d\n",n,n);
for(i=0;i<16;i++)
{k=n&(1<<i);
m+=k;}
printf("%d\n",m);
}
法二
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void main()
{int i,n=0,m;char s[20];
printf("input 16 jinzhi\n");
scanf("%s",s);
for(i=0;i<strlen(s);i++)
{if(isalpha(s[i]))
m=tolower(s[i]);
switch(m)
{case 'a':m=10;break;
case 'b':m=11;break;
case 'c':m=12;break;
case 'd':m=13;break;
case 'e':m=14;break;
case 'f':m=15;break;
default :m=s[i]-'0';
}
n=n*16+m;
}
printf("(%s)16=(%d)10",s,n);
}