[英]Decimal to Hex in C++
我已经编写了这个程序来获得一个数字和一个基数作为两个输入,然后在给定的基数中打印数字,当基数小于 10 时它工作得很好,但是当我输入像 16 这样的基数时,而不是打印单词“A”代表 10,或 F 代表 15,程序打印单词的 ASCII 值,但我想要单词本身。
#include <iostream>
using namespace std;
int base(int n, int t);
int main()
{
char ch;
do {
int n=0, t=0;
base(n,t);
cout << "\n\nDo you want to continue?(y/n)";
cin >> ch;
} while (ch=='y');
}
int base(int n, int t)
{
cout << "\nPlease enter the number : ";
cin >> n;
cout << "\nPlease enter the base : ";
cin >> t;
int i=80;
int x[i];
int m=n;
for (i=1; n>=t ;i++)
{
int rem;
rem = n%t;
n = n/t;
if (rem>9)
{
switch (char(rem))
{
case 10 :
rem = 'A';
break;
case 11 :
rem = 'B';
break;
case 12 :
rem = 'C';
break;
case 13 :
rem = 'D';
break;
case 14 :
rem = 'E';
break;
case 15 :
rem = 'F';
break;
}
}
x[i]=rem;
}
cout << "The number " << m << " in base " << t << " is = ";
cout << n;
for (int j=(i-1); j>0; j--)
cout << x[j];
return 0;
}
我知道这是因为我已将 x[i] 声明为 integer,所以这就是它发生的原因,但我不知道如何解决此问题。
要将 ASCII 代码打印为字符,可以将其转换为 char。 所以,而不是
cout << x[j];
你可以做
cout << static_cast<char>(x[j]);
但是,您目前将 10 以下的数字保留为数字,这在转换为 char 后将是错误的。 如果它小于 10,你可以通过在 rem 中添加'0'来解决这个问题。
另一种可能性是将 x 的类型从 int 更改为 char; 这样,您就不必施法了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.