将十六进制转换为十进制不转换的程序
问题描述:
#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中运行的程序不会显示任何错误。 感谢您的帮助:)将十六进制转换为十进制不转换的程序
答
你的键盘输入将返回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]
什么特别不工作? – Legman
'得到(c)'你为什么要这样做。几种更好的方法来阅读信息。另外什么工作 – JackVanier
或简单地使用[流操纵器](http://en.cppreference.com/w/cpp/io/manip/hex)的任务。 – Ron