栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python中的Base64

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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,",那你保存的就要以png格式,如果是"data:image/png:base64,"那你保存的时候就以jpg格式。
with open('2.jpg', 'wb') as f:
    f.write(img_data)
bytes 与 str 的区别
  • bytes 存储字节(0-255)
  • str 存储Unicode字符(0-65535)
bytes 与 str 转换
  • str 转 bytes
    b = s.encode('utf-8')
  • bytes 转 str
    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'nx14x1eABC'
#ASCII中 10=n , 20= x14,30=x1e,65,66,67分别对应ABC,其余同理
c = bytes(range(65,65+26))  # b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
d = bytes(5)  # b'x00x00x00x00x00'
e = bytes('hello 中国','utf-8')  
# b'helloxe4xb8xadxe5x9bxbd'

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

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

参考文献

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/829573.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号