1.背景介绍
进制转化,是计算机科学学习中必须要掌握的基础知识之一,而在Python语言中则提供了丰富的内置函数和模块来实现进制转化。Python内置函数hex(),oct(),int(),能够实现十进制、十六进制和八进制之间的转化。此外,Python还有一个专门用来完成进制转换的微弱模块,即“binascii”模块。下面,我们将一一介绍它们的使用方法,以供大家学习和参考。
2.进制转化的Python内置函数
2.1 hex()函数
hex()函数用于将十进制数转化为十六进制数。其用法如下:
hex(number)
其中,number表示需要转换的十进制数,注意:该函数转换出来的十六进制数是带有0x前缀的。具体来说,比如将十进制数17转化为十六进制数,可以这样写:
num = 17
hex_num = hex(num)
print(hex_num) # 0x11
2.2 oct()函数
oct()函数用于将十进制数转化为八进制数。其用法如下:
oct(number)
其中,number表示需要转换的十进制数,需要注意的是,该函数转换出来的八进制数也是带有0o前缀的。比如将十进制数23转化为八进制数,可以这样写:
num = 23
oct_num = oct(num)
print(oct_num) # 0o27
2.3 int()函数
int()函数是将数值的字符串表示转化为数值的函数,它可以实现将十六进制数、八进制数和二进制数转化为十进制数。其用法如下:
int(x, base=10)
其中,参数x为需要转换的字符串或数字,参数base为转换的目标进制,默认为10,如果参数x为字符串,则必须指定base参数。
2.3.1 将十六进制数转化为十进制数
比如将十六进制数0x1f转化为十进制数可以这样写:
hex_num = '0x1f'
dec_num = int(hex_num, 16)
print(dec_num) # 31
2.3.2 将八进制数转化为十进制数
比如将八进制数0o27转化为十进制数可以这样写:
oct_num = '0o27'
dec_num = int(oct_num, 8)
print(dec_num) # 23
2.3.3 将二进制数转化为十进制数
比如将二进制数10101转化为十进制数可以这样写:
bin_num = '10101'
dec_num = int(bin_num, 2)
print(dec_num) # 21
3.用binascii模块实现进制转化
3.1 binascii模块概述
binascii模块是Python标准库中一个用于实现二进制数据和ASCII字符串互转的模块。在进制转化方面,它的作用就是将二进制、八进制、十六进制数转化为字符串表示,将字符串表示转化为二进制、八进制、十六进制数表示。下面我们就来介绍一下该模块的使用方法。
3.2 二进制转化为其他进制的实现方法
3.2.1 二进制转化为八进制
方法如下:
先将二进制数转换成十进制数,使用int()函数即可。
再将得到的十进制数转换成相应的八进制字符串,使用oct()函数即可。
下面是示例代码:
bin_num = '1010'
# 将二进制数转化为十进制数
dec_num = int(bin_num, 2)
# 将十进制数转为八进制字符串
oct_num = oct(dec_num)
print(oct_num) # '0o12'
3.2.2 二进制转化为十六进制
方法如下:
先将二进制数转换成十进制数,使用int()函数即可。
再将十进制数转换成相应的十六进制字符串,使用hex()函数即可。
下面是示例代码:
bin_num = '1010'
# 将二进制数转化为十进制数
dec_num = int(bin_num, 2)
# 将十进制数转为十六进制字符串
hex_num = hex(dec_num)
print(hex_num) # '0xa'
3.3 其他进制转化为二进制的实现方法
3.3.1 八进制转化为二进制
方法如下:
使用int()函数将八进制字符串转化为十进制数。
再将得到的十进制数转换为二进制数,使用bin()函数即可。
下面是示例代码:
oct_num = '12'
# 将八进制数转为十进制数
dec_num = int(oct_num, 8)
# 将十进制数转化为二进制数串
bin_num = bin(dec_num)
print(bin_num) # '0b1010'
3.3.2 十六进制转化为二进制
方法如下:
使用int()函数将十六进制字符串转化为十进制数。
再将得到的十进制数转换为二进制数,使用bin()函数即可。
下面是示例代码:
hex_num = 'a'
# 将十六进制数转化为十进制数
dec_num = int(hex_num, 16)
# 将十进制数转化为二进制数串
bin_num = bin(dec_num)
print(bin_num) # '0b1010'
总结
Python提供的内置函数和binascii模块让进制转换变得简单快捷,需要注意的是不同的进制之间的转换必须通过十进制中转才能实现。