用字母在Base 10-16中打印(我被困在必须打印任何数字的项目中)

时间:2019-03-31 21:34:53

标签: c++

我被困在一个项目中,我必须打印出10-16之间任何基数的任何数字。问题在于,在那些基础中,您必须在前面添加一个字母,我真的不太了解如何使用递归。如果我在16的底数中做246,则得到156。我知道实际答案应该是F6。转换时15转换为F。但是我该怎么办?在哪里添加代码?

int conversionFunction(int num, int base)
{
     if (num == 0)
        return 0;
     int x = num % base;
     num /= base;
     if (x < 0)
        num = num + 1; 
     conversionFunction(num, base);
     if (x < 0){
        cout << x+(base * -1);
     }
     else{
        cout << x;
        return x;
     }
}

1 个答案:

答案 0 :(得分:2)

请考虑打印一个字符而不是打印数字 x的可能性。 Look at the ASCII table,请注意数字0-9具有连续的数值,字母A-Z也是如此。

您可以利用该属性:

if (x < 10) cout << '0' + x; // prints a character!
else cout << 'A' + (x - 10); // prints a character!