这里以十进制数 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
"""

可以看到,最终我们得到了十进制下的整数1008位二进制下的表示结果为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()0x

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

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐