python - 在 python 3 中替换 base64 编码中的填充
问题描述
import base64
s = "05052020"
python2.7
base64.b64encode(s)
输出是字符串'MDUwNTIwMjA='
蟒蛇3.7
base64.b64encode(b"05052020")
输出是字节
b'MDUwNTIwMjA='
我想用“a”替换=
s = str(base64.b64encode(b"05052020"))[2:-1]
s = s.replace("=", "a")
我意识到这是肮脏的方式,所以我怎样才能做得更好?
编辑:预期结果:
带有替换填充的 Python 代码 3 输出字符串
解决方案
为什么需要更换衬垫?如果=
字符破坏了某些东西,只需删除它们,这些字符不包含任何信息,并且 base64 编码在没有它们的情况下也能正常工作。
解码时,您可以填充几个=
字符以防万一(总是不超过 3,所以我会填充 3,但多余的字符不会破坏任何内容:
>>> import base64
>>> base64.b64encode('aa')
'YWE='
>>> base64.b64decode('YWE==')
'aa'
>>> base64.b64decode('YWE===')
'aa'
>>> base64.b64decode('YWE======')
'aa'
>>>
另一方面,放置a
一个有效的 b64 编码字符可能会破坏您解码的字符串:
>>> base64.b64encode('aa')
'YWE='
>>> base64.b64decode('YWEa')
'aa\x1a'
推荐阅读
- python - python中是否有一个函数可以帮助我获取网页中隐藏的html数据?
- python-3.x - 硒元素不可点击。消息:将目标移出边界(会话信息:chrome=77.0.3865.90)
- c# - 具有依赖注入的 Entity Framework Core 是如何处理的?
- javascript - 为什么 Typescript 不鼓励将值设置为 null?
- c++ - 使用 MFC 读取文件
- python - 如何在 aiohttp 中设置查询处理程序
- laravel - 如何在查询中包含另一个表中的列?
- mysql - 在多个表中更新,设置多个值
- javascript - 如何将 jquery datepicker 格式转换为时间戳格式,如 dd-mm-yyyy (28/09/2019 3:40pm)
- javascript - 在反应中映射所有非空对象