Python Base64编码和解码操作
作者:峡谷的小鱼 时间:2022-10-20 06:26:05
Base64编码和解码
Base64 不是加密算法,只是一种编码方式,数据从一种形式转换为另一种形式进行传输/存储。Base64 就是一种基于64个可打印字符来表示二进制数据的方法。
Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。最后,用一个码表来得到我们想要的字符串,这就是 Base64编码。
码表:
索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 |
0 | A | 17 | R | 34 | i | 51 | z |
1 | B | 18 | S | 35 | j | 52 | 0 |
2 | C | 19 | T | 36 | k | 53 | 1 |
3 | D | 20 | U | 37 | l | 54 | 2 |
4 | E | 21 | V | 38 | m | 55 | 3 |
5 | F | 22 | W | 39 | n | 56 | 4 |
6 | G | 23 | X | 40 | o | 57 | 5 |
7 | H | 24 | Y | 41 | p | 58 | 6 |
8 | I | 25 | Z | 42 | q | 59 | 7 |
9 | J | 26 | a | 43 | r | 60 | 8 |
10 | K | 27 | b | 44 | s | 61 | 9 |
11 | L | 28 | c | 45 | t | 62 | + |
12 | M | 29 | d | 46 | u | 63 | / |
13 | N | 30 | e | 47 | v | ||
14 | O | 31 | f | 48 | w | ||
15 | P | 32 | g | 49 | x | ||
16 | Q | 33 | h | 50 | y |
Python 中集成了base64 模块,可用于对二进制数据进行编码解码操作:
>>> a = "Hello world"
>>> b = base64.encode(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: encode() missing 1 required positional argument: 'output'
>>>
>>>
>>> b = base64.b64encode(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.8/base64.py", line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'
>>>
>>>
>>>
>>> a = b"Hello world"
>>> b = base64.b64encode(a)
>>> b
b'SGVsbG8gd29ybGQ='
>>> c = base64.b64decode(b)
>>> c
b'Hello world'
>>> d = b.decode('ascii')
>>> d
'SGVsbG8gd29ybGQ='
>>> e = base64.b64decode(d)
>>> e
b'Hello world'
>>>
可以看到使用 base64.b64encode 进行编码时,只能时二进制数据,如果输入时 str 文本,将报错 TypeError。
而使用 base64.b64decode 解码时,字符串和字节床都可以作为输入。
来源:https://blog.csdn.net/weixin_43276033/article/details/124886105
标签:Python,Base64,编码,解码
0
投稿
猜你喜欢
微信跳一跳php代码实现
2024-06-05 09:46:20
Python定时执行之Timer用法示例
2021-09-14 21:46:01
python 元组和列表的区别
2021-08-25 19:01:27
JavaScript实现九宫格抽奖
2024-04-16 09:32:06
Vue双向绑定原理及实现方法
2024-05-10 14:16:55
Java数据库操作库DButils类的使用方法与实例详解
2024-01-20 13:32:45
postman传递当前时间戳实例详解
2022-01-09 17:28:34
Python中input()函数的用法实例小结
2021-09-04 18:42:59
Mysql常用命令行大全
2009-01-15 16:34:00
python输入中文的实例方法
2023-08-03 03:25:43
Python中Generators教程的实现
2023-07-28 03:23:20
远程登录MySQL服务(小白入门篇)
2024-01-19 09:02:56
中国移动G3笔记本全Flash 网站
2009-04-27 12:51:00
Python函数中参数是传递值还是引用详解
2022-10-13 02:45:18
Python上下文管理器Content Manager
2021-08-22 23:47:11
Python3 Loguru输出日志工具的使用
2021-11-18 04:28:29
那些被我遗忘掉的XHTML标签们
2008-06-07 14:27:00
PyQt QCombobox设置行高的方法
2021-10-15 19:50:20
pandas to_excel 添加颜色操作
2021-07-19 19:49:57
一文看懂JSONP原理和应用
2024-04-23 09:10:47