– 在二进制和ASCII-Internet数据处理之间转换(Python教程)(参考资料)
binascii
– 在二进制和ASCII之间转换
binascii
模块包含许多方法来转换二进制和各种ASCII编码的二进制表示。通常,您不会直接使用这些函数,而是使用包装模块,如uu
,base64
或binhex
。binascii
模块包含用C编写的低级函数,以便更高速度使用更高级别的模块.
注意
a2b_*
函数接受仅包含ASCII字符的Unicode字符串。其他函数只接受类似于字节的对象(例如bytes
, bytearray
和其他支持缓冲协议的对象).
在版本3.3中更改: a2b_*
函数
现在接受ASCII-only unicode字符串binascii
模块定义了以下函数:
binascii.
b2a_uu
(data, *, backtick=False)-
将二进制数据转换为ASCII字符行,返回值为转换行,包括换行符char。data的长度最多为45。如果backtick是的,零由@表示
"`"
而不是空间.更改版本3.7:添加了backtick参数。
binascii.
a2b_base64
(string)-
将base64数据块转换回二进制并返回二进制数据。更多一行可以一次通过.
binascii.
b2a_base64
(data, *, newline=True)-
将二进制数据转换为base64编码中的ASCII字符行。returnvalue是转换后的行,如果newline istrue,则包括换行符。此功能的输出符合RFC 3548 .
在版本3.6中更改:添加了newline参数.
binascii.
a2b_qp
(data, header=False )-
将一个quoted-printable数据块转换回二进制并返回binarydata。一次可以传递多行。如果是可选参数header存在且真实,下划线将被解码为spaces.
binascii.
b2a_qp
(data, quotetabs=False, istext=True, header=False)-
将二进制数据转换为quoted-printableencoding中的ASCII字符行。返回值是转换后的行。如果存在可选参数quotetabs且为true,则将对所有选项卡和空格进行编码。如果选项参数istext存在且为真,则不对新行进行编码,但会对尾随空格进行编码。如果可选参数header ispresent和true,则空格将按 RFC 1522 编码为下划线。如果选项参数header存在且为false,则换行字符也将被编码;否则换行转换可能会损坏二进制数据流.
binascii.
a2b_hqx
(string)-
将binhex4格式的ASCII数据转换为二进制,而不进行RLE解压缩。字符串应包含完整的数字二进制字节,或(在binhex4数据的最大部分的情况下)剩余的位为零.
binascii.
rledecode_hqx
(data)-
对数据执行RLE-decompression,根据binhex4标准。该算法使用
0x90
在一个字节作为重复指示符之后,后跟一个count.A计数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)-
计算一个16位的CRC值data,以value作为初始CRC,并返回结果。这使用CRC-CCITT多项式x 16 + x 12 + x 5 + 1,通常表示为0x1021。这个CRC用于binhex4格式.
binascii.
crc32
(data [, value])-
计算CRC-32,32data,从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))
binascii.
b2a_hex
(data)binascii.
hexlify
(data)-
返回二进制data的十六进制表示。data的每个字节都转换为相应的2位十六进制表示。因此,字节对象的长度是data.
的两倍,使用
bytes.hex()
方法也可以方便地访问类似的功能(但返回一个文本字符串)
binascii.
a2b_hex
(hexstr)binascii.
unhexlify
(hexstr)-
返回十六进制字符串hexstr表示的二进制数据。这个功能是
b2a_hex()
. hexstr必须包含偶数个十六进制数字(可以是大写或小写),否则会引发Error
异常.相似的功能(仅接受文本字符串参数,但对空白更多自由)是也可以使用
bytes.fromhex()
类方法访问.
- exception
binascii.
Error
-
错误引发异常。这些通常是编程错误.
- exception
binascii.
Incomplete
-
对不完整数据提出异常。这些通常不是编程错误,但可以通过读取更多数据并再次尝试来处理.