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))