Python各种进制的转换进制介绍
转换⼆进制: bin()函数
转换⼗进制:int()函数
转换⼗六进制:hex()函数
转换8进制:oct()函数
1. ⼗进制转为其它进制
1. ⼗进制转为⼆进制
print(bin(4)) # 输出0b100
print('{0:b}'.format(4)) # 输出100
2. ⼗进制转为⼋进制
print(oct(8)) #输出0o10
print('{0:o}'.format(8)) # 输出10
3. ⼗进制转⼗六进制
print(hex(15)) # 输出0xf
print('{0:x}'.format(15)) # 输出f
2. 其它进制转⼗进制
1. ⼆进制转为⼗进制
# int('要转换的字符串',制定进制)
print(int('1010', 2)) # 输出10
print(eval('0b1010')) # 输出10
print('{0:d}'.format(0b1010)) # 输出10
2. ⼋进制转为⼗进制
print(int('14', 8)) # 输出12
print(eval('0o14')) # 输出12
print('{0:d}'.format(0o14)) # 输出12
3. ⼗六进制转为⼗进制
print(int('10', 16)) # 输出16
print(eval('0x10')) # 输出16
print('{0:d}'.format(0x10)) # 输出16
注意
hex()函数格式化字符串⽐format()慢,不推荐使⽤。
eval()函数⽐hex慢,不推荐使⽤。
3. ⼆进制、⼋进制以及⼗六进制之间的转换
借助⼗进制
print(bin(int('0xf', 16))) # 输出0b1111
函数直接转换
print(bin(0xa)) # 输出0b1010
print(oct(0xa)) # 输出0o12
print(hex(0b1010)) #输出0xa
代码逻辑进制转换
class Jinzhi(object):
'''
# 输⼊特定进制的数实现进制转换
# 输⼊/输出:仅⼆进制,⼋进制,⼗进制,⼗六进制相互转换
# 要求
# ⼗进制直接输⼊数字即可
# ⼆进制0b
# ⼋进制0o
# ⼗六进制0x
# 仅⽀持整数数字输⼊
'''''
# 进制对应的字典
jinzhi = {'0b':'⼆进制','0o':'⼋进制','default':'⼗进制','0':'⼗六进制'}
'''构造函数:⽤户输⼊:user_input_num,输出进制类型out(默认输出⼗进制)'''
def __init__(self,user_input_num,out='10'):
python格式化输出format
if user_input_num == '0':
return 0
else:
# ⽤户输⼊为字符串变量
self.user_input_num = user_input_num
self.out = out
# 将数据统⼀转换为10进制
self.user_format_data = eval(self.user_input_num)            # 判断⽤户输⼊进制类型
<_type()
# 根据out进⾏进制输出
jieguo = self.output_data(out)
<_info(jieguo)
# 根据前缀判断数字是哪种进制
def get_type(self):
# 看⽤户输⼊的字符串长度是否符合前缀要求
if len(self.user_input_num)>2:
#取⽤户输⼊字符串前缀
head = self.user_input_num[0:2]
if head == '0b' or head =='0B':
# ⼆进制前缀
elif head == '0o' or head == '0O':
# ⼋进制前缀
elif head == '0x' or head == '0X':
# ⼗六进制前缀
else:
else:
# 根据out参数输出⽬标进制
def output_data(self,out):
if out == '2':
self.out_jinzhi = '⼆进制'
return '{0:b}'.format(self.user_format_data)
elif out == '8':
self.out_jinzhi = '⼋进制'
return '{0:o}'.format(self.user_format_data)
elif out == '16':
self.out_jinzhi = '⼗六进制'
return '{0:x}'.format(self.user_format_data)
else:
self.out_jinzhi = '⼗进制'
return self.user_format_data
# 信息打印
def get_info(self,jieguo):
print('-'*50)
print('您输⼊的数据:'+self.user_input_num)
print('它是:'+ self.pe]+'数')
print('您希望输出的结果:'+self.out_jinzhi+'数')
print('输出结果是:'+str(jieguo))
print('-'*50)
if __name__ == '__main__':
jinzhi_obj = Jinzhi(user_input_num='7',out='2')
jinzhi_obj = Jinzhi(user_input_num='1000',out='8')
jinzhi_obj = Jinzhi(user_input_num='1000',out='16')
简易进制转换
# 获取⽤户输⼊⼗进制数
dec = int(input("输⼊数字:"))
print("⼗进制数为:", dec)
print("转换为⼆进制为:", bin(dec))
print("转换为⼋进制为:", oct(dec))
print("转换为⼗六进制为:", hex(dec))