Python进制转换


这里以十进制数

​10​​为例,转换为其他进制。

十进制转换为二进制

# 初始化整数10
num = 10
# 将整数10转换为二进制表示
print(bin(num))
# 去掉二进制表示前的标识符0b
print(bin(num)[2:])
"""
result:
0b1010
1010
"""

从上述的结果可以看到,我们成功地将十进制下的整数​​10​​​转换为了二进制下的​​1010​​​。然而这不够,我们再来看一个例子,如果我们需要将​​100​​转换为二进制表达呢?

# 初始化整数100
num = 100
# 将整数100转换为二进制表示
print(bin(num))
# 去掉二进制表示前的标识符0b
print(bin(num)[2:])
"""
result:
0b1100100
1100100
"""

我们可以看到,十进制下的整数​​100​​​转换为了二进制下的​​1100100​​​。不难发现,我们二进制下的表打是一个​​7​​​位数。我们知道,通常在计算机中,我们会使用​​8​​​位,​​16​​​位,​​32​​​位,​​64​​​位来表示一个数字。也就是说,我们应该使用一个​​8​​​位数来表示​​100​​​这个整数。显然这里的​​7​​​位数​​1100100​​​省略了最前面的​​0​​。

所以我们需要对上述代码进行一些小的改动,最终结果如下:

# 初始化整数100
num = 100
# 初始化一个新的字符串对象,存储最终的二进制结果
str1 = ""
# 将整数100转换为二进制表示
num_8 = bin(num)
# 去掉二进制表示前的标识符0b
num_8 = num_8[2:]
# 将最终的结果最高为前加上0
if len(num_8) < 8:
str1 = "0" * (8 - len(num_8)) + num_8

print(str1)
"""
result:
01100100
"""

可以看到,最终我们得到了十进制下的整数​​100​​​在​​8​​​位二进制下的表示结果为​​01100100​​​。如果十进制下的整数很大,则可以采用​​16​​位,甚至更多位数的二进制表示结果。原理同上述代码。注意:二进制的表示结果是string类型的,而不再是​int​类型了。八进制,十六进制的结果也是​string​类型

十进制转换为八进制

# 初始化整数10
num = 10
# 将整数10转换为二进制表示
print(oct(num))
# 去掉二进制表示前的标识符0b
print(oct(num)[2:])
"""
result:
0o12
12
"""

十进制转换为十六进制

# 初始化整数10
num = 10
# 将整数10转换为二进制表示
print(hex(num))
# 去掉二进制表示前的标识符0b
print(hex(num)[2:])
"""
result:
0xa
a
"""

二进制转换为十进制

str1 = "1010"
print(int(str1, 2))
"""
result:
10
"""

八进制转换为十进制

str1 = "10"
print(int(str1, 8))
"""
result:
8
"""

十六进制转换为十进制

str1 = "f"
str2 = "F"
print(int(str1, 16))
print(int(str2, 16))
"""
result:
15
15
"""

二进制,八进制,十六进制之间的相互转换

十六进制转换为二进制

这里我们以十六进制转换为二进制举例。我们可以先将十六进制转换为十进制,然后再将十进制转换为二进制即可。

str1 = "f"
result = bin(int(str1, 16))[2:]
print(result)
"""
result:
1111
"""

二进制转换为十六进制

str1 = "1111"
result = hex(int(str1, 2))[2:]
print(result)
"""
result:
f
"""

特别注意: 最终我们获取到的十六进制结果为小写的​​f​​字符,然而当我们表示十六进制的数字时,我们是不区分大写还是小写字符的,因此在实际应用中我们可以进行相应的调整。

附录

通过观察不难发现,二进制,八进制,十六进制下的标识符为:

项目

内置转换函数

标识符

二进制

bin()

0b

八进制

oct()

0o

十六进制

hex()

0h

不难发现,标识符为​​0​​加上内置转换函数的首字母。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~