binascii模块概述
binascii模块提供了在二进制数据和各种ASCII编码之间转换的函数。
导入binascii模块
要使用binascii模块里的函数,需要首先导入模块。
import binascii
常用函数
binascii模块中包含许多有用的函数。以下是一些常用函数:
hexlify(s):将二进制数据转化为十六进制字符串。
unhexlify(s):将十六进制字符串转化为二进制数据。
b2a_base64(data):将二进制数据转化为base64编码的ASCII字符串。
a2b_base64(string):将base64编码的ASCII字符串转化为二进制数据。
hexlify函数
hexlify函数将二进制数据转换为十六进制数对,并返回一个二进制十六进制字符串。
下面是一个示例,将字符串转换为二进制数据并使用hexlify函数进行转换:
string = 'hello, world!'
data = string.encode('utf-8') # 使用utf-8编码将字符串转换为二进制数据
h = binascii.hexlify(data)
print(h)
运行结果为:
b'68656c6c6f2c20776f726c6421'
可以看到,返回了一个二进制字符串,其中每对十六进制数对应一个字符。
需要注意的是,hexlify函数的参数必须是一个二进制数据对象,而不能是字符串。
unhexlify函数
unhexlify函数将十六进制字符串转换为相应的二进制数据。
以下是一个示例,使用hexlify函数将二进制数据转换为十六进制字符串,然后使用unhexlify函数将其转换回二进制数据并打印:
string = 'hello, world!'
data = string.encode('utf-8') # 使用utf-8编码将字符串转换为二进制数据
h = binascii.hexlify(data) # 将二进制数据转换为十六进制字符串
d = binascii.unhexlify(h) # 将十六进制字符串转换为二进制数据
print(d)
运行结果为:
b'hello, world!'
可以看到,unhexlify函数将十六进制字符串成功转换回了原始的二进制数据。
binascii和Base64编码
Base64编码是一种将二进制数据转换为ASCII字符串的编码方式。binascii模块提供了方便的函数来执行Base64编码和解码。
b2a_base64函数
b2a_base64函数将二进制数据转换为base64编码的ASCII字符串。
以下是一个示例,使用b2a_base64函数将二进制数据编码为base64编码的ASCII字符串:
string = 'hello, world!'
data = string.encode('utf-8') # 使用utf-8编码将字符串转换为二进制数据
b64 = binascii.b2a_base64(data)
print(b64)
运行结果为:
b'aGVsbG8sIHdvcmxkCg==\n'
可以看到,b2a_base64函数将二进制数据编码为了一串base64编码的ASCII字符串。
a2b_base64函数
a2b_base64函数将base64编码的ASCII字符串转换为相应的二进制数据。
以下是一个示例,使用a2b_base64函数将base64编码的ASCII字符串解码为二进制数据并打印:
string = 'hello, world!'
data = string.encode('utf-8') # 使用utf-8编码将字符串转换为二进制数据
b64 = binascii.b2a_base64(data) # 将二进制数据编码为base64编码的ASCII字符串
d = binascii.a2b_base64(b64) # 将base64编码的ASCII字符串解码为二进制数据
print(d)
运行结果为:
b'hello, world!'
可以看到,a2b_base64函数将base64编码的ASCII字符串成功解码为二进制数据。
总结
binascii模块提供了一些转换二进制数据和各种ASCII编码之间的函数,在实际编程中经常使用。使用hexlify函数将二进制数据转换为十六进制字符串,使用unhexlify函数将十六进制字符串转换为二进制数据。使用b2a_base64函数将二进制数据转换为base64编码的ASCII字符串,使用a2b_base64函数将base64编码的ASCII字符串转换为相应的二进制数据。