从十进制基数转换为十六进制基数c ++

问题描述 投票:-1回答:1

我想从大于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 << "\nThe base " << base << " is:\n";
    while (!mystack.empty())
    {
        int x = mystack.top();
        cout << x << " ";
        mystack.pop();
    }
    cout << "\n\n";
}
c++ stack base
1个回答
3
投票

您的转换代码是正确的:mystack包含正确的数字,顺序相反。

你的打印代码是错误的:cout << x << " ";xint将打印数字,对于11和以上的基数你也需要字母。

一种方法是制作string数字,并使用x作为其索引:

std::string digits("0123456789ABCDEF");
...
while (!mystack.empty()) {
    int x = mystack.top();
    cout << digits[x] << " ";
    mystack.pop();
}
© www.soinside.com 2019 - 2024. All rights reserved.