赞
踩
Base64编码 是一种基于 64 个可打印字符来表示二进制数据的方法。目前 Base64 已经成为网络上常见的传输 8 位二进制字节代码的编码方式之一。
为什么会有 Base64 编码呢?因为有些网络传送渠道并不支持所有的字节,例如:传统的邮件只支持可见字符的传送,像 ASCII 码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制。
图片的二进制流的每个字节不可能全部是可见字符,这就导致图片的二进制流无法传送。最好的解决方式就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送。即把不可打印的字符也能用可打印字符来表示,问题就解决了。
码值 | 字符 | 码值 | 字符 | 码值 | 字符 | 码值 | 字符 |
---|---|---|---|---|---|---|---|
0 | A | 16 | Q | 32 | g | 48 | w |
1 | B | 17 | R | 33 | h | 49 | x |
2 | C | 18 | S | 34 | i | 50 | y |
3 | D | 19 | T | 35 | j | 51 | z |
4 | E | 20 | U | 36 | k | 52 | 0 |
5 | F | 21 | V | 37 | l | 53 | 1 |
6 | G | 22 | W | 38 | m | 54 | 2 |
7 | H | 23 | X | 39 | n | 55 | 3 |
8 | I | 24 | Y | 40 | o | 56 | 4 |
9 | J | 25 | Z | 41 | p | 57 | 5 |
10 | K | 26 | a | 42 | q | 58 | 6 |
11 | L | 27 | b | 43 | r | 59 | 7 |
12 | M | 28 | c | 44 | s | 60 | 8 |
13 | N | 29 | d | 45 | t | 61 | 9 |
14 | O | 30 | e | 46 | u | 62 | + |
15 | P | 31 | f | 47 | v | 63 | / |
以二进制文件图片为例:
import base64
with open(r"1.jpg", "rb") as f:
# b64encode是编码,b64decode是解码
base64_data = base64.b64encode(f.read())
print(base64_data) # 输出生成的base64码,Bytes类型
# b'xxxxx'类型的字符串
# img_str = 'abcdefgh12345oK='#比如生成后的码就这么放,替换下面的base64_data即可
img_data = base64.b64decode(base64_data)
# 注意:如果是"data:image/jpg:base64,",那你保存的就要以jpg格式,如果是"data:image/png:base64,"那你保存的时候就以png格式。
with open('2.jpg', 'wb') as f:
f.write(img_data)
bytes
存储字节(0-255)str
存储Unicode字符(0-65535)str
转 bytes
b = s.encode('utf-8')
bytes
转 str
s = b.decode('utf-8')
\x
表示十六进制数字,一位十六进制
表示四位二进制
。
bytes()
生成一个空的字节串 等同于 b''
bytes(整型可迭代对象)
用可迭代对象初始化一个字节串,不能超过255bytes(整数n)
生成 n
个值为零的字节串bytes(字符串, encoding='utf-8')
用字符串的转换编码生成一个字节串a = bytes() # b''
b = bytes([10,20,30,65,66,67]) # b'\n\x14\x1eABC'
#ASCII中 10=\n , 20= \x14,30=\x1e,65,66,67分别对应ABC,其余同理
c = bytes(range(65,65+26)) # b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
d = bytes(5) # b'\x00\x00\x00\x00\x00'
e = bytes('hello 中国','utf-8')
# b'hello\xe4\xb8\xad\xe5\x9b\xbd'
base64中没有出现\x
,因为base64把这些字符都避开了。
26(英文大写)+26(英文小写)+10(0-9数字)+2特殊(+/) = 64
https://www.jianshu.com/p/5bb986772ef8
https://tooltt.com/base64-table/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。