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])
这篇文章就结束到这,需要的朋友可以参考一下,希望大家以后多多支持毛票票。