在Python中,默认的数据都是十进制的,其它进制的数字需要在数字前面加上特定的符号,用来加以说明。不同的进制表示的方式如下:
2进制:ob,例如:0b1010 → 10
8进制:0o,例如:0o12 → 10
10进制:10
16进制:0x,例如:0xa → 10,注意:十进制中,a-f全部小写。
如果设计进制转换,有一种最简单的办法,那就是用10进制作为中间进制,先将原进制转换成10进制,然后再转换成相应的目标进制。
这里介绍一下将其它进制转换成十进制的函数:int
int(x, base=10):x必须为字符串,返回的结果为将x作为base参数指定的进制数转换成十进制后的数。
from icecream import ic
ic(int('15', 8)) # 8进制下,0o10其实就是十进制下的13
18:05:12|> int(‘15’, 8): 13
然后再通过相应的函数将十进制的数转换成目标进制的数。例如:
from icecream import ic
# 将八进制下的15转换成二进制
ic(bin(int('15', 8)))
18:07:27|> bin(int(‘15’, 8)): ‘0b1101’
以下表格为转换关系(列所在进制转换成行所在进制)
←↓ | 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)) | - |