首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

binascii

binascii模块包含许多在二进制和各种ASCII编码二进制表示之间转换的方法。通常情况下,你不会直接使用这些功能,但使用的包装模块一样uubase64或者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

不完整的数据引发异常。这些通常不是编程错误,但可以通过读取更多的数据并再次尝试来处理。

扫码关注腾讯云开发者

领取腾讯云代金券