binascii
binascii — Convert between binary and ASCII
该binascii
模块包含许多在二进制和各种ASCII编码二进制表示之间转换的方法。通常情况下,你不会直接使用这些功能,但使用的包装模块一样uu
,base64
或者binhex
相反。该binascii
模块包含用C语言编写的低级函数,以获得更高级别模块使用的更高速度。
该binascii
模块定义了以下功能:
binascii.a2b_uu(string)
将一行uuencoded数据转换回二进制并返回二进制数据。行通常包含45(二进制)字节,除了最后一行。行数据后面可能会出现空格。
binascii.b2a_uu(data)
将二进制数据
转换为一行ASCII字符,返回值是转换后的行,包括换行符char。数据
的长度最多应为45。
binascii.a2b_base64(string)
将一段base64数据转换回二进制并返回二进制数据。一次可以传递多个行。
binascii.b2a_base64(data)
将二进制数据转换为base64编码中的一行ASCII字符。返回值是转换后的行,包括换行符char。新行被添加,因为这个函数的原始用例是为它提供一系列57字节的输入行以获得符合MIME-base64标准的输出行。否则,输出符合RFC 3548
。
binascii.a2b_qp(string[, header])
将一段引用可打印的数据转换回二进制并返回二进制数据。一次可以传递多个行。如果可选参数头
存在且为true,则下划线将被解码为空格。
binascii.b2a_qp(data[, quotetabs, istext, header])
将二进制数据转换为带引号的可打印编码中的ASCII字符行。返回值是转换后的行。如果可选参数quotetabs
存在且为true,则所有制表
符和空格都将被编码。如果可选参数istext
存在并且为true,则不对新行进行编码,但将对后面的空白进行编码。如果可选参数头
存在且为true,则根据RFC1522将空格编码为下划线。如果可选参数头
存在且为假,则换行符也将被编码; 否则换行转换可能会破坏二进制数据流。
binascii.a2b_hqx(string)
将binhex4格式的ASCII数据转换为二进制,而不进行RLE解压缩。该字符串应该包含完整数量的二进制字节,或者(在binhex4数据的最后一部分的情况下)剩余的位为零。
binascii.rledecode_hqx(data)
根据binhex4标准对数据执行RLE解压缩。该算法0x90
在一个字节之后用作重复指示符,然后是一个计数。计数值0
指定一个字节值0x90
。该例程返回解压缩的数据,除非数据输入数据以孤立重复指示符结束,在这种情况下Incomplete
引发异常。
binascii.rlecode_hqx(data)
对数据
执行binhex4样式的RLE压缩并返回结果。
binascii.b2a_hqx(data)
执行hexbin4二进制转ASCII转换并返回结果字符串。参数应该已经是RLE编码的,并且长度可以被3除尽(可能除了最后一个片段)。
binascii.crc_hqx(data, crc)
计算的一个16位的CRC
值的数据
,开始以初始CRC
并返回结果。这使用CRC
-CCITT多项式_x_16 + _x_12 + _x_5 + 1,通常表示为0x1021。该CRC
以binhex4格式使用。
binascii.crc32(data[, crc])
计算数据的32位校验和CRC-32,从最初的crc开始。这与ZIP文件校验和一致。由于该算法被设计用作校验和算法,因此不适合用作通用哈希算法。使用方法如下:
print binascii.crc32("hello world")
# Or, in two pieces:
crc = binascii.crc32("hello")
crc = binascii.crc32(" world", crc) & 0xffffffff
print 'crc32 = 0x%08x' % crc
注意
要在所有Python版本和平台上生成相同的数值,请使用crc32(data)&0xffffffff。如果仅使用压缩二进制格式的校验和,则不需要返回值,因为无论符号如何,返回值都是正确的32位二进制表示。
版本2.6中更改:无论平台如何,返回值都在-2 ** 31,2 ** 31-1的范围内。过去,价值将在一些平台上签名,并在其他平台上签名。如果您希望它匹配Python 3行为,请对该值使用&0xffffffff。
版本3.0中更改:返回值是无符号的,范围为0,2 ** 32-1,无论平台如何。
binascii.b2a_hex(data)binascii.hexlify(data)
返回二进制数据的
十六进制表示。数据的
每个字节都被转换成相应的2位十六进制表示。结果字符串因此是数据
长度的两倍。
binascii.a2b_hex(hexstr)binascii.unhexlify(hexstr)
返回由十六进制字符串hexstr
表示的二进制数据。这个函数是与之相反的b2a_hex()
。hexstr
必须包含偶数个十六进制数字(可以是大写或小写),否则TypeError
会引发a。
exception binascii.Error
异常引发的错误。这些通常是编程错误。
exception binascii.Incomplete
不完整的数据引发异常。这些通常不是编程错误,但可以通过读取更多的数据并再次尝试来处理。