从十进制基数转换为十六进制基数c ++
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从十进制基数转换为十六进制基数c ++相关的知识,希望对你有一定的参考价值。
我想从大于10(11到16)的基数转换。此代码仅转换为基数2-9。我如何转换让我们说299在基地10 = 12B在基地16,14E在基地15,1A0在基地13 ....同样的。我的代码应该在哪里/如何?先感谢您。
using namespace std;
int main()
{
stack <int> mystack;
int input;
int base;
cout << "Please enter an integer to be converted (base 10): ";
cin >> input;
cout << "Base (2 to 16): ";
cin >> base;
do {
int x = input % base;
mystack.push(x);
} while (input = input / base);
cout << "
The base " << base << " is:
";
while (!mystack.empty())
{
int x = mystack.top();
cout << x << " ";
mystack.pop();
}
cout << "
";
}
答案
您的转换代码是正确的:mystack
包含正确的数字,顺序相反。
你的打印代码是错误的:cout << x << " ";
与x
是int
将打印数字,对于11和以上的基数你也需要字母。
一种方法是制作string
数字,并使用x
作为其索引:
std::string digits("0123456789ABCDEF");
...
while (!mystack.empty()) {
int x = mystack.top();
cout << digits[x] << " ";
mystack.pop();
}
以上是关于从十进制基数转换为十六进制基数c ++的主要内容,如果未能解决你的问题,请参考以下文章