Python 利用栈实现十进制到 2 - 16 进制转换:完整代码及详细解释
在计算机科学中,使用栈(Stack)来实现进制转换是一种常见的方法。栈是一种后进先出(LIFO, Last In First Out)的数据结构,非常适合用于处理这类问题,因为进制转换的过程可以看作是一个逆序操作。 下面是一个使用Python编写的示例代码,该代码实现了将一个十进制数转换为任意进制(2-16)的数,并使用了栈来存储中间结果。 ```python class Stack: def __init__(self): self.items = [] def is_empty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[-1] if not self.is_empty() else None def size(self): return len(self.items) def convert_decimal_to_base(decimal_number, base): digits = "0123456789ABCDEF" rem_stack = Stack() while decimal_number > 0: rem = decimal_number % base rem_stack.push(rem) decimal_number = decimal_number // base new_base_number = "" while not rem_stack.is_empty(): new_base_number += digits[rem_stack.pop()] return new_base_number # 测试代码 if __name__ == "__main__": decimal_number = 255 # 要转换的十进制数 base = 16 # 目标进制 print(f"Decimal {decimal_number} in base {base} is: {convert_decimal_to_base(decimal_number, base)}") ``` 代码解释: 1. Stack 类:定义了一个简单的栈类,包含基本的栈操作如 `push`、`pop`、`peek` 和 `is_empty`。 2. convert_decimal_to_base 函数:这个函数接受两个参数,一个是十进制数 `decimal_number`,另一个是目标进制 `base`。函数内部使用一个栈来存储每次除法的余数。当原始的十进制数被完全处理后,从栈中弹出所有元素并构建最终的字符串表示形式。 3. digits 字符串:用于将数字转换为相应的字符,特别是在处理大于10的进制时,例如16进制中的A-F。 4. 测试代码:示例中将十进制数255转换为16进制,输出结果应为 "FF"。 这个程序可以很容易地修改以支持其他类型的输入或输出格式,或者添加错误检查来增强健壮性。 ######[AI写代码神器 | 567点数解答 | 2024-10-16 20:06:59]
- 256级灰阶图像压缩为16级灰阶的Python实现(字节豆包 | 675点数解答 | 2026-02-14 20:17:48)48
- 256级灰阶图像压缩为16级灰阶的C++实现方案(字节豆包 | 1080点数解答 | 2026-02-14 20:19:02)37
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)491
- 揭秘!十进制数到负进制数的转换程序及代码详解(DeepSeek | 490点数解答 | 2026-01-20 17:31:14)46
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)287
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)286
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)376
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)267
- 优化高中英语核心词汇短语HTML页面,这些建议不容错过!(DeepSeek | 217点数解答 | 2025-07-01 23:41:02)204
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)444
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)438
- C++ 实现我的世界基岩版:从简单框架到开发要点揭秘(字节豆包 | 182点数解答 | 2025-02-22 15:53:11)213