将十六进制转换为十进制不转换的程序

问题描述:

#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

你的键盘输入将返回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]