binascii —在二进制和 ASCII 之间转换


binascii模块包含许多在二进制和各种 ASCII 编码的二进制表示形式之间进行转换的方法。通常,您不会直接使用这些Function,而应使用uubase64binhex之类的包装器模块。 binascii模块包含以更高的速度用 C 编写的低级Function,这些Function由上级模块使用。

Note

a2b_*函数接受仅包含 ASCII 字符的 Unicode 字符串。其他Function仅接受bytes-like objects(例如bytesbytearray和其他支持缓冲区协议的对象)。

在版本 3.3 中进行了更改:a2b_*函数现在接受仅 ASCII 的 unicode 字符串。

binascii模块定义以下Function:

在 3.7 版中进行了更改:添加了* backtick *参数。

在 3.6 版中进行了更改:添加了* newline *参数。

在版本 3.2 中更改:仅接受字节字符串或字节数组对象作为 Importing。

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 中更改:结果始终是未签名的。要在所有 Python 版本和平台上生成相同的数值,请使用crc32(data) & 0xffffffff

使用bytes.hex()方法也可以方便地访问类似的Function(但返回文本字符串)。

如果指定* sep ,则它必须是单个字符 str 或 bytes 对象。它将在每个 bytes_per_sep Importing 字节之后插入输出中。默认情况下,分隔符的位置从输出的右端开始计数,如果希望从左侧开始计数,请提供负的 bytes_per_sep *值。

>>> import binascii
>>> binascii.b2a_hex(b'\xb9\x01\xef')
b'b901ef'
>>> binascii.hexlify(b'\xb9\x01\xef', '-')
b'b9-01-ef'
>>> binascii.b2a_hex(b'\xb9\x01\xef', b'_', 2)
b'b9_01ef'
>>> binascii.b2a_hex(b'\xb9\x01\xef', b' ', -2)
b'b901 ef'

在 3.8 版中进行了更改:添加了* sep bytes_per_sep *参数。

也可以使用bytes.fromhex() class 方法访问类似的Function(仅接受文本字符串参数,但对空格更为自由)。

See also

  • Module base64

  • 支持以 16、32、64 和 85 为基数的 RFC 兼容的 base64 样式编码。

  • Module binhex

  • 支持在 Macintosh 上使用的 Binhex 格式。

  • Module uu

  • 支持在 Unix 上使用的 UU 编码。

  • Module quopri

  • 支持 MIME 电子邮件中使用的带引号的可打印编码。

首页