赞
踩
#include<stdio.h> #include<string.h> #include<math.h> int main(){ char strHex[10]; int i = 0;//循环用 int len = 0;//保存字符长度 int temp = 0; //缓存 long long answer = 0;//保存最终的答案 gets(strHex);//输入字符(十六进制数据) len = strlen(strHex);//计算长度 for (i = 0; strHex[i] != '\0'; ++i){ switch(strHex[i]){ case 'A': temp = 10; break; case 'B': temp = 11; break; case 'C': temp = 12; break; case 'D': temp = 13; break; case 'E': temp = 14; break; case 'F': temp = 15; break; default: temp = strHex[i]-'0'; break; } answer += (temp*pow(16,len-1-i)); } //算法 printf("%lld",answer);//输出答案 return 0; }
for (i = 0; strHex[i] != '\0'; ++i){
switch(strHex[i]){
case 'A': temp = 10; break;
case 'B': temp = 11; break;
case 'C': temp = 12; break;
case 'D': temp = 13; break;
case 'E': temp = 14; break;
case 'F': temp = 15; break;
default: temp = strHex[i]-'0'; break;
}
answer += (temp*pow(16,len-1-i));
}
16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
以此类推
当字符为ABCD等时可用Switch语句来转换成十进制数。
最后answer讲所有的答案累加起来便是最后档案。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。