简介

binascii 模块包含很多在二进制和二进制表示的各种ASCII码之间转换的方法。 通常情况不会直接使用这些函数,而是使用像 uu , base64 ,或 binhex 这样的封装模块。 为了执行效率高,binascii 模块含有许多用 C 写的低级函数,这些底层函数被一些高级模块所使用。

常用函数

  • binascii.a2b_uu(string)

    将单行 uu 编码数据转换成二进制数据并返回。uu 编码每行的数据通常包含45 个(二进制)字节,最后一行除外。每行数据后面可能跟有空格。

  • binascii.b2a_uu(data, *, backtick=False)

    将二进制数据转换为 ASCII 编码字符,返回值是转换后的行数据,包括换行符。 data 的长度最多为45。如果 backtick 为ture,则零由 ‘`’ 而不是空格表示。

  • binascii.a2b_base64(string)

    将 base64 数据块转换成二进制并以二进制数据形式返回。一次可以传递多行数据。

  • binascii.b2a_base64(data, *, newline=True)

    将二进制数据转换为一行用 base64 编码的ASCII字符串。返回值是转换后的行数据,如果 newline 为true,则返回值包括换行符。

  • binascii.crc32(data[, value])

    计算 CRC-32 ,从 value 的初始 CRC 开始计算 data 的32位校验和。默认初始 CRC 为零。该算法与 ZIP 文件校验和一致。由于该算法被设计用作校验和算法,因此不适合用作通用散列算法。使用方法如下:

  1. print(binascii.crc32(b"hello world"))
  2. # Or, in two pieces:
  3. crc = binascii.crc32(b"hello")
  4. crc = binascii.crc32(b" world", crc)
  5. print('crc32 = {:#010x}'.format(crc))

在 3.0 版更改: 校验结果始终是无符号类型的。要在所有Python版本和平台上生成相同的数值,请使用 crc32(data) & 0xffffffff 。

  • binascii.b2a_hex(data[, sep[, bytes_per_sep=1]])
  • binascii.hexlify(data[, sep[, bytes_per_sep=1]])

    返回二进制数据 data 的十六进制表示形式。 data 的每个字节都被转换为相应的2位十六进制表示形式。因此返回的字节对象的长度是 data 的两倍。

  • binascii.a2b_hex(hexstr)

  • binascii.unhexlify(hexstr)

    返回由十六进制字符串 hexstr 表示的二进制数据。此函数功能与 b2a_hex() 相反。 hexstr 必须包含偶数个十六进制数字(可以是大写或小写),否则会引发 Error 异常。