转:Python各进制间的转换[/url]
b:二进制,o:八进制,d:十进制,x:十六进制
bin()、oct()、hex()返回值均为字符串,且分别带有0b、0o、0x前缀。
1、十进制转二进制

>>> bin(10) 

'0b1010' 


>>> '{0:b}'.format(10) 

'1010'



这两种方法返回的都是二进制的字符串表示。
对十进制数直接转二进制

list1 = [] 

if num <= 1 and num >= 0: 

 print "二进制:%d" %(num) 

else : 

 while num > 1 : 

 list1.append(str(num % 2)) 

 num /= 2 

 list1.append(str(num)) 

 list1.reverse()



2、十进制转八进制

>>> oct(12) 

'014' 

>>> '{0:o}'.format(12) 

'14'


3、十进制转十六进制

>>> hex(12) 

'0xc' 

>>> '{0:x}'.format(12) 

'c'



4、二进制转十进制

>>> int('1010',2) 

10 


>>> eval('0b10') 


int(string_num, n):


string_num:进制的字符串表示
n:表示string_num是多少进制的数
5、八进制转十进制

>>> int('014',8) 

12 

>>> '{0:d}'.format(014) 

'12' 


>>> eval('0o10')



6、十六进制转十进制

>>> '{0:d}'.format(0xc) 

'12' 

>>> int('0xc',16) 

12 

>>> eval('0x10') 

16


注意:
hex函数比格式化字符串函数format慢,不推荐使用。
eval函数比int函数慢,不推荐使用。

二进制、十六进制、八进制之间的转换,可以借助十进制这个中间值,即先转十进制再转其他进制,也可以直接使用函数进行转换。如:
十六进制转二进制:

#借助十进制 

>>> bin(int('fc',16)) 

'0b11111100' 

#利用函数直接转 

>>> bin(0xa) 

'0b1010' 

>>> oct(0xa) 

'012' 

>>> hex(10) 

'0xa'