Python实现整数的进制转换
任务要求
将十进制整数分别转换为二进制、八进制和十六进制,并将结果在控制台打印输出。
任务分析
Python提供了bin()、oct()、hex()等内置函数直接完成进制转换,但输出结果包含前缀(如0b)。若需去除前缀或自定义转换逻辑,可通过除基取余法手动实现,该方法通过反复除以目标进制基数并记录余数,最终逆序拼接结果。
任务实现
方法一:内置函数转换
num = 18 # 示例输入
# 使用内置函数转换
binary = bin(num) # 二进制(带前缀0b)
octal = oct(num) # 八进制(带前缀0o)
hexadecimal = hex(num) # 十六进制(带前缀0x)
# 去除前缀的版本
binary_clean = bin(num)[2:]
octal_clean = oct(num)[2:]
hex_clean = hex(num)[2:]
print(f"十进制:{num}\n二进制:{binary_clean}\n八进制:{octal_clean}\n十六进制:{hex_clean}")
说明:
- bin()、oct()、hex()分别返回带前缀的字符串,切片操作[2:]可去除前缀。
- 此方法适用于快速转换,但需注意前缀处理。
方法二:自定义除基取余算法
def decimal_to_base(n, base):
if n == 0:
return '0'
digits = '0123456789ABCDEF'
result = []
while n > 0:
remainder = n % base
result.append(digits[remainder])
n = n // base
return ''.join(reversed(result))
num = 18
print(
f"十进制:{num}\n二进制:{decimal_to_base(num, 2)}\n八进制:{decimal_to_base(num, 8)}\n十六进制:{decimal_to_base(num, 16)}")
说明:
- 函数decimal_to_base接受十进制整数n和目标进制base。
- 通过循环计算余数,利用字符串digits映射余数到对应字符(如十六进制的A-F)。
- 结果需逆序拼接,因余数记录顺序为低位到高位。
运行结果
十进制:18
二进制:10010
八进制:22
十六进制:12
进程已结束,退出代码为 0