#include <stdio.h> #include <stdlib.h> #include <math.h> #define str_lenth 1000 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ char str[str_lenth]={'0'}; int a; char c; int func_lenth(char* str,int lenth) //测量字符串长度函数 { int i; for(i=0;i<lenth;i++) { if(str[i]=='\0') { lenth=i; break; } } return lenth; } int num_change(char n) //16进制字符转int { if((48<=n)&&(57>=n))return n-48; if(n=='A'||n=='a')return 10; if(n=='B'||n=='a')return 11; if(n=='C'||n=='a')return 12; if(n=='D'||n=='a')return 13; if(n=='E'||n=='a')return 14; if(n=='F'||n=='a')return 15; } int change_16_to_10(char* str) { int f=0,b=0,c=0,d=0,e=0; int sum=0; int bit=1; int i; bit=func_lenth(str,str_lenth)-2; f=num_change(str[2])*pow(16,(bit-1)); if(bit>1)b=num_change(str[3])*pow(16,(bit-2)); if(bit>2)c=num_change(str[4])*pow(16,(bit-3)); if(bit>3)d=num_change(str[5])*pow(16,(bit-4)); if(bit>4)e=num_change(str[6])*pow(16,(bit-5)); sum=f+b+c+d+e; return sum; } int main() { while( scanf("%s",str)!=EOF) { printf("%d\n",change_16_to_10(str)); } //while(1); }