Python 用栈实现:二进制→八进制→十进制→十六进制的无缝转换
首先,定义一个栈的数据结构: ```python class Stack: def __init__(self): self.items = [] def is_empty(self): return len(self.items) == 0 def push(self, item): self.items.append(item) def pop(self): if not self.is_empty(): return self.items.pop() else: return None def peek(self): if not self.is_empty(): return self.items[-1] else: return None def size(self): return len(self.items) ``` 接下来,编写一个函数来实现二进制转八进制的功能: ```python def binary_to_octal(binary_num): octal_num = '' binary_stack = Stack() for digit in binary_num: binary_stack.push(int(digit)) while binary_stack.size() >= 3: octal_digit = 0 for i in range(3): octal_digit += binary_stack.pop() * (2 i) octal_num = str(octal_digit) + octal_num remainder = 0 while not binary_stack.is_empty(): remainder = remainder * 2 + binary_stack.pop() octal_num = str(remainder) + octal_num return octal_num ``` 然后是实现八进制转十进制的功能: ```python def octal_to_decimal(octal_num): decimal_num = 0 exponent = 0 octal_stack = Stack() for digit in octal_num: octal_stack.push(int(digit)) while not octal_stack.is_empty(): decimal_num += octal_stack.pop() * (8 exponent) exponent += 1 return decimal_num ``` 最后是实现十进制转十六进制的功能: ```python def decimal_to_hex(decimal_num): hex_num = '' hex_chars = '0123456789ABCDEF' hex_stack = Stack() while decimal_num > 0: hex_stack.push(decimal_num % 16) decimal_num = decimal_num // 16 while not hex_stack.is_empty(): hex_num += hex_chars[hex_stack.pop()] return hex_num ``` 最终的转换过程为: ```python binary_num = '100101101' octal_num = binary_to_octal(binary_num) decimal_num = octal_to_decimal(octal_num) hex_num = decimal_to_hex(decimal_num) print(f'Binary: {binary_num}') print(f'Octal: {octal_num}') print(f'Decimal: {decimal_num}') print(f'Hexadecimal: {hex_num}') ``` 以上是用栈实现二进制转八进制转十进制转十六进制的完整代码。 ######[AI写代码神器 | 1526点数解答 | 2024-10-16 19:49:50]
- C++ 实现:判断 N 个数在二进制、八进制、十进制、十六进制下的可能性(字节豆包 | 812点数解答 | 2026-01-02 19:28:20)60
- Python实现:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 405点数解答 | 2026-01-02 19:43:33)59
- 巧用 Python:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 251点数解答 | 2026-01-02 19:44:35)60
- JS函数 change(n,x):轻松实现数字二进制与八进制转换及注意要点(百度文心 | 436点数解答 | 2025-04-09 22:19:11)152
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)491
- 256级灰阶图像压缩为16级灰阶的Python实现(字节豆包 | 675点数解答 | 2026-02-14 20:17:48)48
- 256级灰阶图像压缩为16级灰阶的C++实现方案(字节豆包 | 1080点数解答 | 2026-02-14 20:19:02)37
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)376
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)444
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)438
- C++实现单门课程成绩管理系统:教师学生双身份操作全解析(GPT | 6361点数解答 | 2024-05-24 02:01:02)567
- C++ 实现超实用单门课程成绩管理系统,教师学生灵活使用! (GPT | 68点数解答 | 2024-05-24 10:17:09)349