从十进制转换为十六进制 C++
converting from decimal base to hexadecimal base c++
我想从大于 10 的基数(11 到 16)进行转换。此代码仅转换为基数 2-9。我如何转换假设以 10 为基数的 299 = 以 16 为基数的 12B,以 15 为基数的 14E,以 13 为基数的 1A0 ....同样如此。 Where/how 我的代码应该是?提前谢谢你。
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 << "\nThe base " << base << " is:\n";
while (!mystack.empty())
{
int x = mystack.top();
cout << x << " ";
mystack.pop();
}
cout << "\n\n";
}
您的转换代码正确:mystack
包含正确的数字,但顺序相反。
你的打印代码是错误的,但是:cout << x << " ";
和 x
是一个 int
将打印数字,对于基数 11 及以上你还需要字母。
一种方法是制作 string
个数字,并使用 x
作为其中的索引:
std::string digits("0123456789ABCDEF");
...
while (!mystack.empty()) {
int x = mystack.top();
cout << digits[x] << " ";
mystack.pop();
}
我想从大于 10 的基数(11 到 16)进行转换。此代码仅转换为基数 2-9。我如何转换假设以 10 为基数的 299 = 以 16 为基数的 12B,以 15 为基数的 14E,以 13 为基数的 1A0 ....同样如此。 Where/how 我的代码应该是?提前谢谢你。
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 << "\nThe base " << base << " is:\n";
while (!mystack.empty())
{
int x = mystack.top();
cout << x << " ";
mystack.pop();
}
cout << "\n\n";
}
您的转换代码正确:mystack
包含正确的数字,但顺序相反。
你的打印代码是错误的,但是:cout << x << " ";
和 x
是一个 int
将打印数字,对于基数 11 及以上你还需要字母。
一种方法是制作 string
个数字,并使用 x
作为其中的索引:
std::string digits("0123456789ABCDEF");
...
while (!mystack.empty()) {
int x = mystack.top();
cout << digits[x] << " ";
mystack.pop();
}