【python初级】10进制与2进制8进制16进制的转换
- 背景
- 代码
背景
在做串口通信的时候发送的字符串都是16进制编码的。
本博客就介绍10进制与2、8、16进制的相互转换。
10进制是我们生活中默认使用的最常用的数值表示方式。
所谓十进制就是逢10进1(0,1,2,3,4,5,6,7,8,9),
2进制是逢2进1(0,1),
8进制是逢8进1(0,1,2,3,4,5,6,7,),
16进制是逢16进1(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)
2、8、16进制的区别,是表示数值的bit最小单位不同,2进制是一个bit位,8进制是3个bit位,计算机非常常用的16进制是4个bit位。
以下是各种进制对应关系:
10进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
16进制 | 0x0 | 0x1 | 0x2 | 0x3 | 0x4 | 0x5 | 0x6 | 0x7 | 0x8 | 0x9 | 0xa | 0xb | 0xc | 0xd | 0xe | 0xf |
8进制 | 0o0 | 0o1 | 0o2 | 0o3 | 0o4 | 0o5 | 0o6 | 0o7 | 0o10 | 0o11 | 0o12 | 0o13 | 0o14 | 0o15 | 0o16 | 0o17 |
2进制 | 0b0 | 0b01 | 0b10 | 0b11 | 0b100 | 0b101 | 0b110 | 0b111 | 0b1000 | 0b1001 | 0b1010 | 0b1011 | 0b1100 | 0b1101 | 0b1110 | 0b1111 |
代码
在python3中可以使用Python的内置函数进行进制间的转换。
2、8、10、16进制分别涉及以下内置函数。
bin():其他进制转二进制,以'0b'开头,如:0b111为十进制的7;
oct():其他进制转八进制,以'0o'开头,如:0o12为十进制的10;
int():其他进制转十进制。从小到大都学的用的就是十进制,大家很熟悉;
hex():其他进制转十六进制。以'0x'开头,如:0x1f为十进制的31;
其他进制转化成10进制的使用示例:
# 八进制转十进制
print(int('10010537',8)) # 输出10进制数字:2101599
print(int(0o10010537)) # 输出10进制数字:2101599
# 十六进制转十进制
print(int('16',16)) # 输出10进制数字:22
print(int(0x16)) # 输出10进制数字:22
# 二进制转十进制
print(int('1111',2)) # 输出10进制数字:15
print(int(0b1111)) # 输出10进制数字:15
其他进制转2进制:
# 八进制转2进制
print(bin(int('10',8)))# 输出2进制数字:0b1000
print(bin(0o10)) # 输出2进制数字:0b1000
# 16进制转2进制
print(bin(int('1f',16))) # 输出2进制数字:0b11111
print(bin(0x1f)) # 输出2进制数字:0b11111
# 10进制转2进制
print(bin(8)) # 输出2进制数字:0b1000
其他进制转16进制:
# 八进制转16进制
print(hex(int('10',8)))# 输出16进制数字:0x8
print(hex(0o10)) # 输出16进制数字:0x8
# 2进制转16进制
print(hex(int('100',2))) # 输出16进制数字:0x4
print(hex(0b100)) # 输出16进制数字:0x4
# 10进制转16进制
print(hex(15)) # 输出16进制数字:0xf