使用栈实现数制的转换十进制转二八十六进制
时间: 2023-10-19 12:20:42 浏览: 99
以下是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语言表示
利用栈来实现十进制转十六进制的C语言算法主要是通过将十进制数分解为每位数字,并逐位处理,直到十进制数值归零。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义字符数组用于存储十六进制结果
char hexChar[] = "0123456789ABCDEF";
void decimalToHex(int num) {
stack<int> s;
while (num != 0) {
int remainder = num % 16; // 取余数得到当前位的值
if (remainder < 10) {
s.push(remainder); // 小于10的直接压入栈
} else {
s.push(remainder - 10 + 'A'); // 大于10的用对应字母表示
}
num /= 16; // 向左移一位
}
// 反转栈并输出结果
char result[17];
int index = 0;
while (!s.empty()) {
result[index++] = hexChar[s.top()];
s.pop();
}
result[index] = '\0'; // 结束字符串
printf("十六进制表示: %s\n", result);
}
int main() {
int decimalNum = 12345;
decimalToHex(decimalNum);
return 0;
}
```
在这个程序中,我们创建了一个栈来保存每个位的十六进制值,然后循环处理十进制数,每次取余16得到一个位的值,将其转换成对应的十六进制字符后压入栈。最后,反转栈并打印出最终的十六进制结果。
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 等函数。
希望对您有所帮助!