19.8. binascii
—在二进制和ASCII之间转换¶
binascii
模块包含许多在二进制和各种ASCII编码二进制表示之间转换的方法。通常,您不会直接使用这些函数,而是使用包装模块,如 uu
,base64
或 binhex
。 binascii
模块包含以C编写的低级函数,用于更高的速度,由更高级别的模块使用。
注解
a2b_*
函数接受只包含ASCII字符的Unicode字符串。其他功能只接受 字节状对象 (如 bytes
,bytearray
和其他支持缓冲区协议的对象)。
在 3.3 版更改: 现在,a2b_*
函数接受只有ASCII的Unicode字符串。
binascii
模块定义以下功能:
-
binascii.
a2b_uu
(string)¶ 将单行的uuencoded数据转换回二进制并返回二进制数据。行通常包含45(二进制)字节,除了最后一行。行数据后面可以跟空格。
-
binascii.
b2a_uu
(data)¶ 将二进制数据转换为一行ASCII字符,返回值是转换后的行,包括换行符。 data 的长度应至多为45。
-
binascii.
a2b_base64
(string)¶ 将一个base64数据块转换回二进制并返回二进制数据。一次可以传递多于一行。
-
binascii.
b2a_base64
(data, *, newline=True)¶ 在base64编码中将二进制数据转换为一行ASCII字符。返回值是转换后的行,如果 newline 为true,则包括换行符。此函数的输出符合 RFC 3548。
在 3.6 版更改: 添加了 newline 参数。
-
binascii.
a2b_qp
(data, header=False)¶ 将一组引用可打印数据转换回二进制并返回二进制数据。一次可以传递多于一行。如果可选参数 header 存在且为真,则下划线将解释为空格。
-
binascii.
b2a_qp
(data, quotetabs=False, istext=True, header=False)¶ 将二进制数据转换为带引号的可打印编码中的ASCII字符行。返回值是转换后的行。如果可选参数 quotetabs 存在且为真,则所有制表符和空格都将被编码。如果可选参数 istext 存在且为true,则不编码换行符,而将对尾部空白进行编码。如果可选参数 header 存在且为真,则根据RFC1522将空格编码为下划线。如果可选参数 header 存在且为假,则换行符也将被编码;否则换行可能会破坏二进制数据流。
-
binascii.
a2b_hqx
(string)¶ 将binhex4格式的ASCII数据转换为二进制,而不进行RLE解压缩。字符串应该包含完整数量的二进制字节,或者(在binhex4数据的最后部分的情况下)具有剩余位零。
-
binascii.
rledecode_hqx
(data)¶ 根据binhex4标准对数据执行RLE解压缩。该算法在一个字节之后使用
0x90
作为重复指示符,随后是计数。0
的计数指定0x90
的字节值。该例程返回解压缩数据,除非数据输入数据以孤儿重复指示符结束,在这种情况下引发Incomplete
异常。在 3.2 版更改: 仅接受bytestring或bytearray对象作为输入。
-
binascii.
rlecode_hqx
(data)¶ 在 data 上执行binhex4风格RLE压缩并返回结果。
-
binascii.
b2a_hqx
(data)¶ 执行hexbin4二进制到ASCII的转换并返回结果字符串。参数应该已经是RLE编码的,并且具有可被3整除的长度(除了可能的最后一个片段)。
-
binascii.
crc_hqx
(data, value)¶ 计算 data 的binhex4 crc值,以 value 作为初始crc,并返回结果。
-
binascii.
crc32
(data[, value])¶ 计算CRC-32,data 的32位校验和,以 value 的初始CRC开始。默认的初始CRC为零。该算法与ZIP文件校验和一致。由于算法被设计为用作校验和算法,所以它不适合用作一般的哈希算法。使用方法如下:
print(binascii.crc32(b"hello world")) # Or, in two pieces: crc = binascii.crc32(b"hello") crc = binascii.crc32(b" world", crc) print('crc32 = {:#010x}'.format(crc))
在 3.0 版更改: 结果始终为unsigned。要在所有Python版本和平台上生成相同的数值,请使用
crc32(data) & 0xffffffff
。
-
binascii.
b2a_hex
(data)¶ -
binascii.
hexlify
(data)¶ 返回二进制 data 的十六进制表示。 data 的每个字节都转换为相应的2位十六进制表示。因此返回的字节对象的长度是 data 的长度的两倍。
-
binascii.
a2b_hex
(hexstr)¶ -
binascii.
unhexlify
(hexstr)¶ 返回由十六进制字符串 hexstr 表示的二进制数据。这个函数是
b2a_hex()
的逆。 hexstr 必须包含偶数个十六进制数字(可以是大写或小写),否则会引发Error
异常。
-
exception
binascii.
Error
¶ 错误时抛出异常。这些通常是编程错误。
-
exception
binascii.
Incomplete
¶ 对不完整的数据产生异常。这些通常不是编程错误,但可以通过读取更多的数据并再次尝试来处理。