问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
代码:
#include<stdio.h>
#include<string.h>
int main(){
int sign;
long long hen=0;
long long count=1;
char hex[10];
gets(hex);
int i=strlen(hex)-1;
for(;i>=0;i--){
switch(hex[i]){
case '0':hen+=(0*count);count*=16;break;
case '1':hen+=(1*count);count*=16;break;
case '2':hen+=(2*count);count*=16;break;
case '3':hen+=(3*count);count*=16;break;
case '4':hen+=(4*count);count*=16;break;
case '5':hen+=(5*count);count*=16;break;
case '6':hen+=(6*count);count*=16;break;
case '7':hen+=(7*count);count*=16;break;
case '8':hen+=(8*count);count*=16;break;
case '9':hen+=(9*count);count*=16;break;
case 'A':hen+=(10*count);count*=16;break;
case 'B':hen+=(11*count);count*=16;break;
case 'C':hen+=(12*count);count*=16;break;
case 'D':hen+=(13*count);count*=16;break;
case 'E':hen+=(14*count);count*=16;break;
case 'F':hen+=(15*count);count*=16;break;
}
}
printf("%I64d",hen);
}