2017-09-14 48 views
-3
#include <iostream> 
#include<stdio.h> 
using namespace std; 

int main() 
{ 
    int x,i,y,d=0; 
    char c[255]; 
    gets(c); 
    for(i=0;c[i]!='\0';i++) 
    { 
     if(c[i]>=0 && c[i]<=9) 
     { 
      x=c[i]; 
      cout<<x; 
      d=(d*16)+x; 
     } 
     else if(c[i]>=65 && c[i]<=90) 
     { 
      y=c[i]-55; 
      d=(d*16)+y; 
     } 
    } 
    cout<<d; 
    return 0; 
} 

這裏整數d是十進制數。在Code :: Blocks中運行的程序不會顯示任何錯誤。 感謝您的幫助:)將十六進制轉換爲十進制不轉換的程序

+1

什麼特別不工作? – Legman

+0

'得到(c)'你爲什麼要這樣做。幾種更好的方法來閱讀信息。另外什麼工作 – JackVanier

+0

或簡單地使用[流操縱器](http://en.cppreference.com/w/cpp/io/manip/hex)的任務。 – Ron

回答

2

你的鍵盤輸入將返回ASCII字符,即'0' .. '9',這是30..39,不0..9。同樣,'A'65(不55):

if(c[i]>='0' && c[i]<='9') 
    { 
     x=c[i] - '0'; 
     cout<<x; 
     d=(d*16)+x; 
    } 
    else if(c[i]>='A' && c[i]<='F') 
    { 
     y=c[i] - 'A'; 
     d=(d*16)+y; 
    } 
+2

建議使用'if(c [i]> ='A'&& c [i] <='F')'和'y = c [i] - 'A';'。 –

相關問題