base64Base16Base32,Base64,Base85数据编码

源代码: Lib / base64.py


该模块提供了将二进制数据编码为printableASCII字符并将这些编码解码二进制数据的功能。它为RFC 3548 ,它定义了Base16Base32和Base64算法,以及事实上的标准Ascii85Base85编码.

RFC 3548 编码适用于编码二进制数据,以便它可以通过电子邮件发送,用作URL的一部分,或作为HTTPPOST请求的一部分包含在内。编码算法与uuencode program.

这个模块提供了两个接口。现代接口支持编码字节对象到ASCII bytes,并解码类似字节的对象包含ASCII到bytes的orstrings。在 RFC 3548 (正常,URL和文件系统安全)中定义的base-64字母都支持.

传统接口不支持从字符串解码,但它提供了对文件对象进行编码和解码的函数。它只支持Base64标准字母表,并根据 RFC 2045 每76个字符添加一行。请注意,如果您正在寻找 RFC 2045 支持你可能想要查看email包而不是

更改版本3.3:仅ASCII字符串现在接受现代接口的解码功能.

更改版本3.4:任何类似字节的对象现在都被此模块中的allencoding和解码函数接受。Ascii85 / Base85支持添加了

现代界面提供:

base64.b64encodes, altchars=None

使用Base64编码字节对象 s并返回编码后的bytes.

可选altchars必须是字节对象至少长度为2(忽略其他字符),它指定+/字符的替代字母。这允许应用程序例如生成URL或文件系统安全的Base64字符串。默认为None,因为使用标准的Base64字母.

base64.b64decode(s, altchars=None, validate=False)

解码Base64编码的字节 -喜欢对象或ASCII字符串s并返回解码的bytes.

可选altchars必须是字节对象或最小长度为2的ASCII字符串(忽略其他字符),指定使用的替代字母而不是+/字符

一个binascii.Error异常被提升s被错误填充.

如果validateFalse(默认值),则字符不在正常的base-64字母表中在填充检查之前,也没有替代字母。如果validateTrue,输入中的这些非字母字符会导致binascii.Error.

base64.standard_b64encodes

编码字节对象 s使用标准的Base64字母并返回编码的bytes.

base64.standard_b64decodes

解码字节对象或ASCII字符串s使用standardBase64字母并返回解码的bytes.

base64.urlsafe_b64encodes

编码字节对象 s使用theURL-和filesystem-safe字母表,取代-+而不是_而不是标准的Base64字母表中的/,并返回编码的bytes。结果可以包含=.

base64.urlsafe_b64decodes

解码字节对象或ASCII字符串s使用URL-和filesystem-safealphabet,在标准Base64字母表中用-代替+_而不是/,并返回解码bytes.

base64.b32encodes

使用Base32编码类似字节的对象 s并返回编码的bytes.

base64.b32decodes, casefold=False, map01=None

解码Base32编码的字节对象或ASCII字符串s并返回解码的bytes.

可选的 casefold是一个标志,指定小写字母是否可以作为输入。出于安全考虑,默认为False.

RFC 3548 允许将数字0(零)可选地映射到字母O(oh),并且可选地将数字1(一)映射到字母I(眼睛)或字母L(el)。可选参数map01当没有None时,指定数字1应该映射到哪个字母(当map01不是None时,数字0总是映射到字母O)。出于安全考虑,默认为None,输入中不允许0和1 .

一个 binascii.Error如果s填充不正确或输入中是否存在非字母字符

base64.b16encodes

编码字节式对象 s使用Base16并返回编码bytes.

base64.b16decodes, casefold=False

解码Base16编码的字节对象或ASCII字符串s并返回解码的bytes.

可选casefold是一个标志,指定是否可以接受alowercase字母作为输入。出于安全考虑,如果False.

填充不正确或者输入中存在非字母字符,则会引发默认值binascii.Error A s.

base64.a85encode(b, *, foldspaces=False, wrapcol=0, pad=False, adobe=False

使用Ascii85编码类似字节的对象 b并返回编码的bytes.

foldspaces是一个使用特殊短的可选标志序列’y’而不是’btoa’支持的4个连续空格(ASCII 0x20)。“标准”Ascii85编码不支持此功能.

wrapcol控制输出是否应添加换行符(b"\n")。如果这不是零,则每个输出行将击败大多数这么长的字符.

pad控制输入是否在编码前填充到4的倍数。注意btoa实现总是pads.

adobe控制编码的字节序列是否用<~~>构成,这是由Adobe实现使用的。

版本3.4.

base64.a85decode (b, *, foldspaces=False, adobe=False, ignorechars=b” \t\n\r\v”)

解码Ascii85编码的字节对象或ASCII字符串b并返回解码的bytes.

foldspaces是一个标志,指定’y’短序列是否应该被接受为4个连续空格(ASCII 0x20)的简写。“标准”Ascii85编码不支持此功能.

adobe控制输入序列是否为Adobe Ascii85格式(即用&lt;〜框起)和〜&gt;).

ignorechars应该是类似字节的对象或包含要从输入中忽略的ASCII字符串。这应该只包含空格字符,并且默认包含ASCII中的所有空白字符.

新版本3.4.

base64.b85encode (b, pad=False)

编码类似字节的对象 b使用base85(用于eggit样式的二进制差异)并返回编码的bytes.

如果pad为真,输入用b"\0"填充所以它的长度在编码之前是4个字节的数量.

新版本3.4.

base64.b85decode (b)

解码base85编码的字节对象或ASCII字符串b并返回解码的bytes。填写是隐含删除,如果必要的话

新版本3.4.

传统界面:

base64.decodeinput, output

解码二进制input文件的内容,并将生成的二进制数据写入output文件。inputoutput必须是文件对象. input将被读取,直到input.readline()返回空字节对象.

base64.decodebytess

解码字节对象 s,它必须包含一行或多行base64编码数据,并返回解码后的bytes.

版本3.1.

base64.decodestring(s)

的新别名decodebytes().

自3.1版以来已弃用.

base64.encodeinput, output

对二进制文件input文件的内容进行编码,并将生成的base64encoded数据写入output文件。inputoutput必须是 fileobjects . input将被读取,直到input.read()返回空字节对象。encode()插入换行符(b"\n")输出的每76个字节后,以及确保输出路径以换行符结尾,按 RFC 2045 (MIME).

base64.encodebytess

编码字节对象 s,可以包含任意二进制数据,并返回包含base64编码数据的bytes,带换行符(b"\n")在每76个字节的输出后插入,并确保有一个尾随的换行符,如RFC 2045 (哑剧)。

版本3.1.

base64.encodestrings

弃用的别名encodebytes().

自版本3.1.以后已弃用

模块的一个示例用法:

>>> import base64>>> encoded = base64.b64encode(b"data to be encoded")>>> encodedb"ZGF0YSB0byBiZSBlbmNvZGVk">>> data = base64.b64decode(encoded)>>> datab"data to be encoded"

也可以看看

模块binascii
支持模块,包含ASCII到二进制二进制到ASCII的转换.
RFC 1521 – MIME(多用途Internet邮件扩展)第一部分:指定和描述Internet邮件主体格式的机制
第5.2节“Base64 Content-Transfer-Encoding”提供了base64编码的定义.

评论被关闭。