当前位置:   article > 正文

python中的Base64_python base64

python base64

python中的Base64

简述

Base64编码 是一种基于 64 个可打印字符来表示二进制数据的方法。目前 Base64 已经成为网络上常见的传输 8 位二进制字节代码的编码方式之一。

为什么会有 Base64 编码呢?因为有些网络传送渠道并不支持所有的字节,例如:传统的邮件只支持可见字符的传送,像 ASCII 码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制。

图片的二进制流的每个字节不可能全部是可见字符,这就导致图片的二进制流无法传送。最好的解决方式就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送。即把不可打印的字符也能用可打印字符来表示,问题就解决了。

编码对照表

码值字符码值字符码值字符码值字符
0A16Q32g48w
1B17R33h49x
2C18S34i50y
3D19T35j51z
4E20U36k520
5F21V37l531
6G22W38m542
7H23X39n553
8I24Y40o564
9J25Z41p575
10K26a42q586
11L27b43r597
12M28c44s608
13N29d45t619
14O30e46u62+
15P31f47v63/

python实现编码、解码

以二进制文件图片为例:

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

bytes 与 str 的区别

  • bytes 存储字节(0-255)
  • str 存储Unicode字符(0-65535)

bytes 与 str 转换

  • strbytes
    b = s.encode('utf-8')
  • bytesstr
    s = b.decode('utf-8')

字节串的构造函数

\x 表示十六进制数字,一位十六进制表示四位二进制

  • bytes() 生成一个空的字节串 等同于 b''
  • bytes(整型可迭代对象) 用可迭代对象初始化一个字节串,不能超过255
  • bytes(整数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'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

base64中没有出现\x,因为base64把这些字符都避开了。

26(英文大写)+26(英文小写)+10(0-9数字)+2特殊(+/) = 64

参考文献

https://www.jianshu.com/p/5bb986772ef8

https://tooltt.com/base64-table/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/177243
推荐阅读
相关标签
  

闽ICP备14008679号