【Python学习】进制转换

知识梳理

2进制 8进制 10进制 16进制
2进制 - bin(int(n,8)) bin(int(n,10)) bin(int(n,16))
8进制 oct(int(n,2)) - oct(int(n,10)) oct(int(n,16))
10进制 int(n,2) int(n,8) - int(n,16)
16进制 hex(int(n,2)) hex(int(n,8)) hex(int(n,10)) -
函数 意义
bin() 是将十进制的数字转换成二进制的数字。其中bin()函数中传入的是十进制的数字,数据类型为数字类型。
oct() 是将十进制的数字转换成八进制的数字。其中oct()函数中传入的是十进制的数字,数据类型为数字类型。
int() 是将其他进制的数字转换成十进制的数字。其中int()函数中转入的第一个参数是需要转换的其他进制的字符串形式的数字,第二个参数是第一参数的进制数,也就是说第一个参数传的是多少进制的数字第二个参数就传个多少,数据类型为数字类型。
hex() 是将十进制的数字转换成十六进制的数字。其中hex()中需要传入的是十进制的数字,数据类型为数字类型。

使用int()转换
int()类可将数字或字符串转换为整型,调用方法为:

int(x, base=10)

任意字符数字转换为10进制:

print(int('55')==55)    #字符串转换为十进制整型数
print(int(0b11)==3)    #二进制转换为十进制
print(int(0o11)==9)    #八进制转换为十进制
print(int(0x11)==17)    #十六进制转换为十进制

16进制转换为10进制:int(x,16)

x为传入的参数,如:

print(int('aaaa',16)==43690)
print(int('abcdef',16)==11259375)

8进制转换为10进制:int(x,8)

x为传入的参数,如:

print(int('12345670',8)==2739128)
print(int('10',8)==8)

2进制转换为10进制:int(x,2)

x为传入的参数,如:

print(int('10',2)==2)
print(int('11',2)==3)
print(int('100',2)==4)

使用bin(x) ,oct(x) 或hex(x) 转换:

传入的参数可以是2,8,16进制的,输出是字符串形式

bin(x)转换为二进制:

print(bin(0b100)=='0b100')    #二进制转换为二进制
print(bin(0o11)=='0b1001')    #八进制转换为二进制
print(bin(11)=='0b1011')       #十进制转换为二进制
print(bin(0xa1)=='0b10100001')    #十六进制转换为二进制

oct(x)转换为八进制:

print(oct(0b11)=='0o3')    #二进制转换为八进制
print(oct(0o77)=='0o77')    #八进制转换为八进制
print(oct(55)=='0o67')    #十进制转换为八进制
print(oct(0xab)=='0o253')    #十六进制转换为八进制

hex(x)转换为十六进制:

print(hex(0b11)=='0x3')    #二进制转换为十六进制
print(hex(0o11)=='0x9')    #八进制转换为十六进制
print(hex(11)=='0xb')    #十进制转换为十六进制
print(hex(0xaa)=='0xaa')    #十六进制转换为十六进制

使用format() 转换

format(x,'b')         #将x转换为二进制
format(x,'o')         #将x转换为八进制
format(x,'d')         #将x转换为十进制
format(x,'x')         #将x转换为十六进制

x可以是二进制,八进制,十进制,十六进制

format(x,‘b’)转换为二进制

print(format(0b11,'b')=='11')     #二进制转换为二进制
print(format(0o11,'b')=='1001')    #八进制转换为二进制
print(format(11,'b')=='1011')    #十进制转换为二进制
print(format(0x11,'b')=='10001')    #十六进制转换为二进制

format(x,‘o’)转换为八进制

print(format(0b11,'o')=='3')    #二进制转换为八进制
print(format(0o11,'o')=='11')    #八进制转换为八进制
print(format(11,'o')=='13')    #十进制转换为八进制
print(format(0x11,'o')=='21')    #十六进制转换为八进制

format(x,‘d’)转换为十进制

print(format(0b11,'d')=="3")    #二进制转换为十进制
print(format(0o11,'d')=="9")   #八进制转换为十进制
print(format(11,'d')=="11")   #十进制转换为十进制
print(format(0x11,'d')=="17")   #十六进制转换为十进制

format(x,‘x’)转换为十六进制

print(format(0b11,'x')=='3')   #二进制转换为十六进制
print(format(0o11,'x')=='9')   #八进制转换为十六进制
print(format(11,'x')=='b')   #十进制转换为十六进制
print(format(0x11,'x')=='11')   #十六进制转换为十六进制

format 其他类型转换为2进制

操作:在format函数的槽中添加一个b 即可实现其他类型对2进制的转换,下面举例说明

n=input()
print("{:b}".format(int(n,8)))
# 先将8进制的数转换为10进制,
# 然后在format的槽中添加一个b,等价于实现了bin函数的功能
# 但是此结果是不带有0b前缀的

输入:1010
输出:1000001000

format 其他类型转换为8进制:

操作:在format函数的槽中添加一个o 即可实现其他类型对8进制的转换,下面举例说明

n=input()
print("{:o}".format(int(n,16)))
# 先将一个16进制数转换为10进制
# 然后利用format函数格式化数字方法转换即可

输入:a
输出:12

format 其他类型转换为16进制:

操作:在format函数的槽中添加一个x 即可实现其他类型对2进制的转换,下面举例说明

n=input()
print("{:x}".format(int(n,8)))
# 先将一个8进制的数转换为16进制
# 然后原理同上

输入:1010
输出:208

注意:由于转换成10进制本来就是不带前缀的,无需用format格式化数字方法控制

如何打印 1-10的 二进制数 就是8位数字?

for i in range(1,11):
    print(f'{i:08b}')

输出
00000001
00000010
00000011
00000100
00000101
00000110
00000111
00001000
00001001
00001010

你可能感兴趣的:(python,python,学习,开发语言)