以下代码用于实现十进制转二进制、八进制、十六进制:
实例(Python 3.0+)
# -*- coding: UTF-8 -*-
# Filename : binary-octal-hexadecimal.py
# author by : www.runoops.com
# Python 获取用户输入十进制数
dec = int(input("输入数字:"))
print("十进制数为:", dec)
print("转换为二进制为:", bin(dec))
print("转换为八进制为:", oct(dec))
print("转换为十六进制为:", hex(dec))
执行以上代码输出结果为:
$ python binary-octal-hexadecimal.py
输入数字:18
十进制数为: 18
转换为二进制为: 0b10010
转换为八进制为: 0o22
转换为十六进制为: 0x12
$ python binary-octal-hexadecimal.py
输入数字:121
十进制数为: 121
转换为二进制为: 0b1111001
转换为八进制为: 0o171
转换为十六进制为: 0x79
具体实现:
十进制到二进制:
def dec2bin(num):
l = []
if num < 0:
return '-' + dec2bin(abs(num))
while True:
num, remainder = divmod(num, 2)
l.append(str(remainder))
if num == 0:
return ''.join(l[::-1])
十进制到八进制:
def dec2oct(num):
l = []
if num < 0:
return '-' + dec2oct(abs(num))
while True:
num, remainder = divmod(num, 8)
l.append(str(remainder))
if num == 0:
return ''.join(l[::-1])
十进制到十六进制:
base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]
def dec2hex(num):
l = []
if num < 0:
return '-' + dec2hex(abs(num))
while True:
num,rem = divmod(num, 16)
l.append(base[rem])
if num == 0:
return ''.join(l[::-1])