本文的内容稍稍有一点特殊:进制转换是编程里面最基础的内容,但是一般编程中并不会用到。 如果是要学习使用 Python 解决一些问题,完全可以忽略此篇内容; 如果是计算机相关专业学习者或从业者,那么建议认真阅读。
通常平时使用的数字是十进制,逢10进1, 而计算机采用的是二进制, 此外,有时还会遇到八进制,十六进制, 其实只要掌握好方法,这些进制的理解就不难, 相互之间的转换也并不复杂,先来看一个10进制的例子。
日常使用的数字都是常见的十进制数值。在大多数计算机语言中,整数除了十进制表达,一般都还有十六进制数、八进制数和二进制数的表达方式,Python也是这样。
在 Pthon 中使用 0x
开头的“数字”表示十六进制的数。对于 9
以后的数字,没有对应的阿拉伯数字。则使用 a
表示 10
, b
表示 11
,依次类推,最后 f
表示 15。 在十六进制表达中不区分“字母”的大小写。
0xAF
175
注意这里,在 Jupyter 中,会对表达式进行求值,从而得到对应的 10 进制的结果。
在 Python 中使用 0o
开头的数字表示八进制, 注意 0
后面是英文字母 o
。
0o1234
668
在八进制表达中,数字 8
, 9
不能出现:
# 0o129 #此段代码会报错
0b
开关的表达式表示二进制。在二进制表达式中,只能使用数字 0
与 1
:
0b1011010010
722
注意:对于不同于十进制的其他进制表达,表示法都以 0
打头。
然后再看一下如果通过Python中进行计算。Python中二进制的数值以 0b
开头。
print(0b1101010)
106
10进制是缺省的进制表达。不管是什么进制,进行结果求算时总以10进制的方式来查看“数值”结果。
print(0o125) # 85
85
print(0x3f2a1) # 258721
258721
value = int('1101010', 2)
print(value)
106
value = int('125', 8)
print(value)
85
value = int('3f2a1', 16)
print(value)
258721
十进制转二进制
print(bin(106))
0b1101010
十进制转八进制
print(oct(85))
0o125
十进制转十六进制
print(hex(258721), type(hex(258721)))
0x3f2a1 <class 'str'>
八进制转二进制
print(bin(int('125', 8)))
0b1010101
十六进制转二进制
print(bin(int('0x3f2a1', 16)))
0b111111001010100001
二进制转八进制
print(oct(0b1101010))
0o152
二进制转十六进制
print(hex(int('1101010', 2)))
0x6a
十六进制转八进制
print(oct(0x3f2a1))
0o771241
八进制转十六进制
print(hex(int('125', 8)))
0x55
最强大的莫过于 oct
函数,可以将其他三个进制的数值直接转成八进制。