Python标准库base64用法简介

base64模块提供了大量函数用来把二进制数据编码为可打印的ASCII字符,以及将其解码为二进制数据。提供了RFC3548中Base16、Base32、Base64以及事实标准Ascii85和Base85编码与解码算法的实现。

RFC3548编码规则适合对二进制数据进行编码以使其可以通过email安全传输,作为URL的一部分,或者包含在HTTP POST请求中,编码算法与uuencode程序并不一样。该模块提供了两个接口,支持将字节串对象编码为ASCII字节,以及进行相反的解码,支持RFC3548中定义的全部base-64字母。

base64.b64encode(s, altchars=None)

对字节串对象s进行编码,返回编码后的字节串,可选参数altchars必须是长度至少为2的字节串对象(额外的字符将被忽略),用来指定+和/字符的替换字母,允许应用程序生成URL或者文件系统的安全Base64字符串。altchars默认值为None,使用标准的Base64字母。

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

对Base64编码的字节串对象进行解码。

base64.standard_b64encode(s)

使用标准Base64字母对字节串s进行编码。

base64.standard_b64decode(s)

使用标准Base64字母对字节串进行解码。

base64.urlsafe_b64encode(s)

使用URL和文件系统安全的字母对字节串进行编码,把+替换为-,/替换为_,结果中仍包含=。

base64.urlsafe_b64decode(s)

使用URL和文件系统安全的字母对字节串进行编码,把+替换为-,/替换为_。

base64.b32encode(s)

使用Base32对字节串s进行编码。

base64.b32decode(s, casefold=False, map01=None)

对Base32编码的字节串进行解码,可选参数casefold用来标记是否接收小写字母作为输入。RFC3548允许数字0到字母O的映射,以及数字1到字母I或L的映射。当可选参数map01不是None时用来指定数字1映射为什么字母(此时数字0总是会被映射为字母O),当默认为None时输入中不允许包含数字0和1。

base64.b16encode(s)

使用Base16对字节串进行编码。

base64.b16decode(s, casefold=False)

使用Base16对字节串进行解码。

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

使用Ascii85对字节串进行编码,返回编码后的字节串。

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

对Ascii85编码的字节串进行解码。

base64.b85encode(b, pad=False)

使用base85对字节串s进行编码。

base64.b85decode(b)

对base85编码的字节串进行解码。

base64.encode(input, output)

对二进制文件对象input进行编码并写入文件对象output,每76个字节插入一个换行符b'\n',并保证output总是以换行符结束。

base64.decode(input, output)

对二进制文件对象input进行编码并写入文件对象output。

base64.encodebytes(s)

对包含任意二进制数据的字节串进行编码,返回包含base64编码的字节串,每76个字节插入一个换行符b'\n',并且保证以换行符结束。

base64.decodebytes(s)

对包含一行或多行base64编码数据的字节串s进行解码,返回解码的字节串。

>>> import base64 >>> s = '《Python可以这样学》(董付国 著,清华大学出版社)' >>> base64.b64encode(s.encode()) b'44CKUHl0aG9u5Y+v5Lul6L+Z5qC35a2m44CL77yI6JGj5LuY5Zu9IOiRl++8jOa4heWNjuWkp+WtpuWHuueJiOekvu+8iQ==' >>> base64.b64decode(_).decode() '《Python可以这样学》(董付国 著,清华大学出版社)' >>> base64.b85encode(s.encode()) b'<A91#d30!RZsm`!<h!NlznSKsx8<#-<A96ryol(LqvX4o<(s`A=#iK2yo~0!h2@Qo<)o+Ot)}INy61_A=cK;xyom' >>> base64.b85decode(_).decode() '《Python可以这样学》(董付国 著,清华大学出版社)' >>> base64.encodebytes(s.encode()) b'44CKUHl0aG9u5Y+v5Lul6L+Z5qC35a2m44CL77yI6JGj5LuY5Zu9IOiRl++8jOa4heWNjuWkp+Wt\npuWHuueJiOekvu+8iQ==\n' >>> base64.decodebytes(_).decode() '《Python可以这样学》(董付国 著,清华大学出版社)'

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2017-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我爱编程

Day7函数式编程3/3

装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。 >>> def now(): ... print('2018...

38070
来自专栏海说

18、面向对象基本原则及UML类图简介

18.1、面向对象基本原则 18.1.1、面向抽象原则 抽象类特点: a、抽象类中可以有abstract方法,也可以有非abstract方法。 b、抽象类...

23100
来自专栏破晓之歌

JAVA入门1 原

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848...

15420
来自专栏深度学习思考者

一文搞懂C/C++中指针那些事(上篇)

一 指针变量 1.间接存取        指针变量的值为地址;普通变量的值为数据;其中“*”为指针运算符。&是地址操作符,用来引用一个内存地址。通过在变量名...

222100
来自专栏猿天地

java8 Lambda尝尝鲜

转载:猿天地 链接:http://cxytiandi.com/blog/detail/2196 java8都已经发布这么久了,一直没来得及使用,线上环境基本...

356110
来自专栏WindCoder

数组排序

7810
来自专栏数据结构笔记

数据结构(四):栈的应用之表达式求值

用户从控制台输入一个数学表达式(所有输入均合法),数学表达式只包含四则运算,程序需输出表达式对应的结果,如:

11220
来自专栏Python爬虫与数据挖掘

Python正则表达式初识(四)

今天继续给大家分享Python正则表达式基础知识,主要给大家介绍一下特殊字符“{}”的用法,具体的教程如下。

8020
来自专栏java工会

Java基础第一阶段知识点,招实习的面试官都在问这些

22790
来自专栏Android Note

Kotlin —  lateinit vs lazy

12530

扫码关注云+社区

领取腾讯云代金券