用C++编写一个程序,运用栈的知识把十进制数转化为十六进制数
时间: 2024-10-16 19:14:41 浏览: 46
C++实现十六进制字符串转换为十进制整数的方法
在C++中,我们可以使用栈数据结构来将十进制数转换成十六进制数。这里我们通过遍历每一位十进制数,并用栈来保存转换过程中的中间结果。当遇到一位能够直接对应十六进制数时,就输出该字符;对于超过十六的数字,我们需要记住并加上前缀A-F(或a-f)。以下是简单的步骤和示例代码:
```cpp
#include <iostream>
#include <stack>
#include <string>
std::string decimalToHex(int num) {
std::stack<char> hexStack;
while (num != 0) {
// 取余数得到四位二进制(因为4位二进制可以表示16种可能)
int remainder = num % 16;
// 根据余数推算对应的十六进制字符
switch (remainder) {
case 0: hexStack.push('0'); break;
case 1: hexStack.push('1'); break;
case 2: hexStack.push('2'); break;
case 3: hexStack.push('3'); break;
case 4: hexStack.push('4'); break;
case 5: hexStack.push('5'); break;
case 6: hexStack.push('6'); break;
case 7: hexStack.push('7'); break;
case 8: hexStack.push('8'); break;
case 9: hexStack.push('9'); break;
case 10: hexStack.push('A'); break; // 转换成大写字母
case 11: hexStack.push('B'); break;
case 12: hexStack.push('C'); break;
case 13: hexStack.push('D'); break;
case 14: hexStack.push('E'); break;
case 15: hexStack.push('F'); break;
default: throw std::invalid_argument("Number is too large for conversion.");
}
// 减去当前的四位二进制数,准备处理下一位
num /= 16;
}
// 将栈顶元素依次弹出,形成十六进制字符串
std::string result;
while (!hexStack.empty()) {
result += hexStack.top();
hexStack.pop();
}
return result; // 逆序返回十六进制字符串
}
int main() {
int decimalNum = 255;
std::cout << "Decimal to Hexadecimal: " << decimalToHex(decimalNum) << std::endl;
return 0;
}
```
当你运行这个程序,输入255,它会输出`FF`,这是十六进制表示的十进制255。
阅读全文