Python Base64编码和解码操作

 更新时间:2022年12月02日 14:48:33   作者:峡谷的小鱼  
Base64 就是一种基于64个可打印字符来表示二进制数据的方法,这篇文章主要介绍了Python Base64编码和解码,需要的朋友可以参考下

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 解码时,字符串和字节床都可以作为输入。

到此这篇关于Python Base64编码和解码的文章就介绍到这了,更多相关Python Base64编码和解码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python排序方法中sort和sorted的区别详解

    Python排序方法中sort和sorted的区别详解

    在python中常用的排序函数就是sort()和sorted()这两个函数,使用 sort() 或内建函数 sorted() 对列表进行排序,本文将详细介绍sorted和sort两者之间的区别,感兴趣的可以了解一下
    2023-08-08
  • Python tkinter常用操作代码实例

    Python tkinter常用操作代码实例

    这篇文章主要介绍了Python tkinter常用操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • python直接调用和使用swig法方调用c++库

    python直接调用和使用swig法方调用c++库

    这篇文章主要介绍了python直接调用和使用swig法方调用c++库,c++运算速度快于python,python简单易写。很多时候对于已有的c++代码也不想用python重写,此时就自然而然地想到用python调用c或者c++,两全其美,需要的朋友可以参考一下
    2022-03-03
  • 详解Python字符串原理与使用的深度总结

    详解Python字符串原理与使用的深度总结

    本文将学习字符串数据类型相关知识,将讨论如何声明字符串数据类型,字符串数据类型与 ASCII 表的关系,字符串数据类型的属性,以及一些重要的字符串方法和操作,超级干货,不容错过
    2022-05-05
  • Python中文文本处理利器jieba分词库使用

    Python中文文本处理利器jieba分词库使用

    这篇文章主要给大家介绍了关于Python中文文本处理利器jieba分词库使用的相关资料,jieba是python中一个重要的第三方中文分词函数库,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 深入了解Python中Pytest Markers的使用方法

    深入了解Python中Pytest Markers的使用方法

    从这篇开始,逐一解决fixture是啥,mark是啥,参数request是啥,钩子函数是啥,parametrize参数化是啥,这些问题,本片先介绍一下mark是啥,以及如何使用
    2023-09-09
  • Python 操作 MySQL数据库

    Python 操作 MySQL数据库

    这篇文章主要介绍了Python 如何操作 MySQL,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09
  • 详解Python利用random生成一个列表内的随机数

    详解Python利用random生成一个列表内的随机数

    这篇文章主要介绍了详解Python利用random生成一个列表内的随机数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python configparser模块配置文件过程解析

    Python configparser模块配置文件过程解析

    这篇文章主要介绍了Python configparser模块配置文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 使用Python实现大文件切片上传及断点续传的方法

    使用Python实现大文件切片上传及断点续传的方法

    本文介绍了使用 Python 实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整体架构流程、技术细节(相关接口和功能的代码实现),最后进行了小结,需要的朋友可以参考下
    2025-01-01

最新评论