使用栈实现数制的转换十进制转二八十六进制
时间: 2023-10-19 21:20:42 浏览: 46
以下是Python代码实现:
```python
def decimal_to_base(num, base):
stack = []
while num > 0:
rem = num % base
stack.append(str(rem))
num //= base
result = ""
while stack:
result += stack.pop()
return result
num = 123
print("十进制数 {} 转二进制为:{}".format(num, decimal_to_base(num, 2)))
print("十进制数 {} 转八进制为:{}".format(num, decimal_to_base(num, 8)))
print("十进制数 {} 转十六进制为:{}".format(num, decimal_to_base(num, 16)))
```
输出结果为:
```
十进制数 123 转二进制为:1111011
十进制数 123 转八进制为:173
十进制数 123 转十六进制为:7B
```
相关问题
c++中使用mfc用于数制转换十进制转二、八、十六进制
您好!基于 MFC 的数制转换可以使用 MFC 提供的 CString 类和相关的转换函数来实现。以下是一个简单的示例代码:
```c++
int num = 12345; // 待转换的十进制数
CString strBin, strOct, strHex;
strBin.Format(_T("%b"), num); // 将十进制数转换为二进制字符串
strOct.Format(_T("%o"), num); // 将十进制数转换为八进制字符串
strHex.Format(_T("%X"), num); // 将十进制数转换为十六进制字符串(大写字母)
```
其中,%b、%o、%X 是格式化输出的控制字符,可以将十进制数转换为二进制、八进制和十六进制字符串。您也可以使用 %d 来输出十进制数的字符串表示。
另外,如果您需要将二进制、八进制和十六进制字符串转换为十进制数,可以使用 MFC 提供的 _tcstoul、_tcstoull 等函数,例如:
```c++
CString strBin = _T("11000000111001"); // 待转换的二进制字符串
unsigned long num = _tcstoul(strBin, nullptr, 2); // 将二进制字符串转换为十进制数
```
其中,_tcstoul 函数可以将字符串转换为无符号长整型数,并且可以指定进制(例如 2 表示二进制)。如果您需要转换的数值不是无符号数,可以使用 _tcstol、_tcstoll 等函数。
希望对您有所帮助!
使用栈实现数制的转换,包括十进制到二、八、十六进制的转换
好的,对于这个问题,我们可以先将十进制数不断除以要转换的进制,将余数存放在栈中,最后将栈中元素按顺序出栈即可得到转换后的数。以下是使用 C++ 实现的代码:
```c++
#include <iostream>
#include <stack>
using namespace std;
void decimalTo(int num, int base) {
stack<int> s;
while (num != 0) {
s.push(num % base);
num /= base;
}
while (!s.empty()) {
int remainder = s.top();
s.pop();
if (remainder > 9)
cout << (char)('A' + remainder - 10);
else
cout << remainder;
}
}
int main() {
int num, base;
cout << "请输入一个十进制数:";
cin >> num;
cout << "请输入要转换的进制(2、8、16):";
cin >> base;
cout << "转换后的结果为:";
decimalTo(num, base);
cout << endl;
return 0;
}
```
希望能够帮助到您!