Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
在我的印象里面进制互相转换确实是很常见的问题,所以在Python中,自然也少不了把下面这些代码收为util。
这是从网上搜索的一篇也的还可以的Python进制转换,经过验证可以使用。下面贴出它的实现代码:
#!/usr/bin/envpython
#-*-coding:utf-8-*-
#2/10/16basetrans.wrotebysrcdogon20th,April,2009
#ldelementsinbase2,10,16.
importos,sys
#globaldefinition
#base=[0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F]
base=[str(x)forxinrange(10)]+[chr(x)forxinrange(ord('A'),ord('A')+6)]
#bin2dec
#二进制to十进制:int(str,n=10)
defbin2dec(string_num):
returnstr(int(string_num,2))
#hex2dec
#十六进制to十进制
defhex2dec(string_num):
returnstr(int(string_num.upper(),16))
#dec2bin
#十进制to二进制:bin()
defdec2bin(string_num):
num=int(string_num)
mid=[]
whileTrue:
ifnum==0:break
num,rem=divmod(num,2)
mid.append(base[rem])
return''.join([str(x)forxinmid[::-1]])
#dec2hex
#十进制to八进制:oct()
#十进制to十六进制:hex()
defdec2hex(string_num):
num=int(string_num)
mid=[]
whileTrue:
ifnum==0:break
num,rem=divmod(num,16)
mid.append(base[rem])
return''.join([str(x)forxinmid[::-1]])
#hex2tobin
#十六进制to二进制:bin(int(str,16))
defhex2bin(string_num):
returndec2bin(hex2dec(string_num.upper()))
#bin2hex
#二进制to十六进制:hex(int(str,2))
defbin2hex(string_num):
returndec2hex(bin2dec(string_num))