十六進制轉十進制

問題描述
  從鍵盤輸入一個不超過8位的正的十六進制數字符串,將它轉換爲正的十進制數後輸出。
  注:十六進制數中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。
樣例輸入
FFFF
樣例輸出
65535

#include <stdio.h>
#include <string.h>
#include <math.h>

int main()
{
char strHex[8];
int i = 0, len = 0, temp = 0;
__int64 nDec = 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;  
    }  
    nDec += (temp*pow(16,len-1-i));  
}  
printf("%I64d",nDec);  

return 0;  

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章