Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
使用Python内置函数:bin()、oct()、int()、hex()可实现进制转换。
先看Python官方文档中对这几个内置函数的描述:
bin(x)
Convertanintegernumbertoabinarystring.TheresultisavalidPythonexpression.IfxisnotaPythonintobject,ithastodefinean__index__()methodthatreturnsaninteger.
oct(x)
Convertanintegernumbertoanoctalstring.TheresultisavalidPythonexpression.IfxisnotaPythonintobject,ithastodefinean__index__()methodthatreturnsaninteger.
int([number|string[,base]])
Convertanumberorstringtoaninteger.Ifnoargumentsaregiven,return0.Ifanumberisgiven,returnnumber.__int__().Conversionoffloatingpointnumberstointegerstruncatestowardszero.Astringmustbeabase-radixintegerliteraloptionallyprecededby‘+'or‘-‘(withnospaceinbetween)andoptionallysurroundedbywhitespace.Abase-nliteralconsistsofthedigits0ton-1,with‘a'to‘z'(or‘A'to‘Z')havingvalues10to35.Thedefaultbaseis10.Theallowedvaluesare0and2-36.Base-2,-8,and-16literalscanbeoptionallyprefixedwith0b/0B,0o/0O,or0x/0X,aswithintegerliteralsincode.Base0meanstointerpretexactlyasacodeliteral,sothattheactualbaseis2,8,10,or16,andsothatint('010',0)isnotlegal,whileint('010')is,aswellasint('010',8).
hex(x)
Convertanintegernumbertoahexadecimalstring.TheresultisavalidPythonexpression.IfxisnotaPythonintobject,ithastodefinean__index__()methodthatreturnsaninteger.
↓
2进制
8进制
10进制
16进制
2进制
-
bin(int(x,8))
bin(int(x,10))
bin(int(x,16))
8进制
oct(int(x,2))
-
oct(int(x,10))
oct(int(x,16))
10进制
int(x,2)
int(x,8)
-
int(x,16)
16进制
hex(int(x,2))
hex(int(x,8))
hex(int(x,10))
-
bin()、oct()、hex()的返回值均为字符串,且分别带有0b、0o、0x前缀。
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))
以下代码用于实现十进制转二进制、八进制、十六进制:
#-*-coding:UTF-8-*- #Filename:test.py #authorby:www.nhooo.com #获取用户输入十进制数 dec=int(input("输入数字:")) print("十进制数为:",dec) print("转换为二进制为:",bin(dec)) print("转换为八进制为:",oct(dec)) print("转换为十六进制为:",hex(dec))
执行以上代码输出结果为:
python3test.py
输入数字:5
十进制数为:5
转换为二进制为:0b101
转换为八进制为:0o5
转换为十六进制为:0x5
python3test.py
输入数字:12
十进制数为:12
转换为二进制为:0b1100
转换为八进制为:0o14
转换为十六进制为:0xc
具体实现
十进制到二进制:
defdec2bin(num): l=[] ifnum<0: return'-'+dec2bin(abs(num)) whileTrue: num,remainder=divmod(num,2) l.append(str(remainder)) ifnum==0: return''.join(l[::-1])
十进制到八进制:
defdec2oct(num): l=[] ifnum<0: return'-'+dec2oct(abs(num)) whileTrue: num,remainder=divmod(num,8) l.append(str(remainder)) ifnum==0: return''.join(l[::-1])
十进制到十六进制:
base=[str(x)forxinrange(10)]+[chr(x)forxinrange(ord('A'),ord('A')+6)] defdec2hex(num): l=[] ifnum<0: return'-'+dec2hex(abs(num)) whileTrue: num,rem=divmod(num,16) l.append(base[rem]) ifnum==0: return''.join(l[::-1])
python进2、8、16制转换源码
defcn(x): returnx.decode('utf-8') a=int(raw_input(cn('请输入要转换的数字:'))) b=int(raw_input(cn('请输入要转换的进制:'))) defx(n,k): ifk==16: d=n s="" whiled!=0: d,f=divmod(d,k) iff==10: f='a' iff==11: f='b' iff==12: f='c' iff==13: f='d' iff==14: f='e' iff==15: f='f' s=str(f)+s returns elifk==2ork==8: d=n s="" whiled!=0: d,f=divmod(d,k) s=str(f)+s returns c=x(a,b) printc #本程序仅支持2,8,16进制,若想支持更多进制请自己动脑该代码吧!
python十进制整数转换为任意进制(36以内)
defbaseN(num,b): return((num==0)and"0")or(baseN(num//b,b).lstrip("0")+"0123456789abcdefghijklmnopqrstuvwxyz"[num%b])
这篇文章就结束到这,需要的朋友可以参考一下,希望大家以后多多支持毛票票。