Python3 字符串base64编解码笔记

b64-fb.png

  • Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括MIME的电子邮件及XML的一些复杂数据。
  • Base64 应用举例:源码bitfont.py把2个字体用到的4个文件和1张PNG图片内嵌到源码中;还有Adobe 的文件格式,一般把jpg预览图编码保存在文档中的XML数据里

Python3 中 Base64 数据编码功能:

  • base64.b64encode(s, altchars=None)
    对 bytes-like object(字节类对象) s 进行 Base64 编码,并返回编码后的 bytes。
  • base64.b64decode(s, altchars=None, validate=False)
    解码 Base64 编码过的 bytes-like object 或 ASCII 字符串 s 并返回解码过的 bytes。

所以下面的代码,先把 utf-8 的字符串先转换成 bytes 类型,再使用 Base64 库进行编码和解码

import base64
s = "www.python.org"
b = s.encode("utf-8")  # s = b.decode('utf-8')
b64 = base64.b64encode(b)
print(s, b, b64)
#  www.python.org b'www.python.org' b'd3d3LnB5dGhvbi5vcmc='

b64 = (
    b"YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNE"
    b"RUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0nNT"
    b"Y3ODkhQCMwXiYqKCk7Ojw+LC4gW117fQ==n"
)   # 多行字符串使用小括号方法

b = base64.b64decode(b64)
s = b.decode("utf-8")
print(b64)
print(b)
print(s)
#  abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#0^&*();:<>,. []{}

编码 Man 的结果为 TWFu,详细原理如下:

1.PNG
在此例中,Base64算法将3个字节编码为4个字符。 转码一次24bit:3×8 =4×6 ; 内存1个字节占8位

Base64索引表

2.PNG

如果要编码的字节数不能被3整除,最后会多出1个或2个字节,那么可以使用下面的方法进行处理:先使用0字节值在末尾补足,使其能够被3整除,然后再进行Base64的编码。在编码后的Base64文本后加上一个或两个=号,代表补足的字节数。也就是说,当最后剩余两个八位(待补足)字节(2个byte)时,最后一个6位的Base64字节块有四位是0值,最后附加上两个等号;如果最后剩余一个八位(待补足)字节(1个byte)时,最后一个6位的base字节块有两位是0值,最后附加一个等号。 参考下表:
3.PNG

相关推荐: 修改宝塔面板中OneDrive备份插件支持世纪互联

文章目录[隐藏] 前言 开始教程 前言 宝塔最近出了那么多问题,我也在考虑要不要继续用了….所以请不要再吐槽了——“正经人谁用宝塔呀?下贱!” 不过话说回来宝塔的确是方便,这个修改我已经用了小半年了,没啥毛病,看到有人问就分享出来。 开始教程 首先直接在宝塔面…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论