python中的Base64

【JS逆向】【14.编码算法】Python 中 base64库编码(详细笔记) Base64 1. base64是什么 2. base64原理 3. 测试 base64 4. base64变种 5. 为什么要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)

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'\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/

Python实现BASE64 算法 本文详细介绍了 BASE64 算法的原理、Python 实现及其实际应用场景。通过对 BASE64 编码和解码过程的解析,以及面向对象的代码实现,读者可以更好地理解 BASE64 的工作机制及其在实际场景中的应用。BASE64 编码作为一种简洁而实用的编码方式,广泛用于各种网络传输和存储场景,是计算机科学中的基础知识之一。 阅读详情

相关推荐

Python Base64解码

Base64编码通过将二进制数据分成每24位(3字节)一组,然后将每组24位数据转换为4个可打印的ASCII字符,从而实现了二进制数据到文本的转换。这种编码方式主要用于在电子邮件、MIME协议、网页传输等领域,确保二进制数据在文本环境中能够正确、安全地传输。Python的base64模块为处理Base64编码数据提供了强大的功能。通过掌握编码方式的选择、错误处理机制以及高级功能的使用,我们可以更加灵活地处理各种Base64编码场景。

Python老吕的博客 3089

python中base64库用法详解

python中base64库用法详解

IT之一小佬的博客 5万+

Python之Base64加解密

欢迎关注【无量测试之道】公众号,回复【领取资源】, Python编程学习资源干货、 Python+Appium框架APP的UI自动化、 Python+Selenium框架Web的UI自动化、 Python+Unittest框架API自动化、 资源和代码 免费送啦~ 文章下方有公众号二维码,可直接微信扫一扫关注即可。 1、什么是Base64 Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2^6=64,所以每6个比特为一个单元,对应某个可打印字符。 3个字节有24个比特,对.

Python+大数据+数据分析+自动化+Vue组件开发 2590

Python使用自带的base64库进行base64编码和解码

在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求。其中,Base64是一种常用的编码方案,广泛用于在网络上传输二进制数据,以及在各种应用中嵌入二进制数据到文本格式中。Python自带的base64模块提供了简洁易用的功能来实现这一需求。以下,我将详细介绍如何使用Python的base64库进行Base64编码和解码,并探讨其实际应用场景和注意事项。

python探索 4041

Python 进阶(十五):Base64 编码和解码(base64 模块)

Base64编码是一种将二进制数据转换为ASCII字符的编码方式。它主要用于在不可靠的环境中传输或存储二进制数据,因为ASCII字符可以在大多数通信协议和文本格式中安全地传输。Base64编码将每3个字节的数据转换为4个字符,而每个字符只使用6位而不是8位,因此可以确保字符都是可打印的。本文详细介绍了Python中的base64模块及其使用方法。通过base64模块,我们可以轻松地进行Base64编码和解码操作。

水滴的博客 5996

避坑指南:PyCINRAD处理CINRAD雷达数据时遇到的5个典型报错及解决方案

本文针对使用PyCINRAD库处理CINRAD雷达基数据时常见的5个典型报错,提供了详细的解决方案。内容涵盖环境配置、数据读取、PPI可视化及性能优化等核心环节,重点解决了版本兼容性、数据异常处理和中文乱码等实际问题,帮助用户高效处理雷达基数据并生成准确的PPI图像。

cc789的博客 1068

python怎么使用base64_Python中的base64模块

本文介绍Python 2.7中的base64模块,该模块提供了基于rfc3548的Base16, 32, 64编解码的接口。官方文档,参考这里。该模块提供两套接口,传统接口基于rfc1521的Base64,当前接口基于rfc3548的Base16/32/64编码规范,本文只介绍当前的接口。当前接口在Python 2.4中就被引进,关于Base64编码格式提供了以下六种接口,便于高效灵活地实现需要的...

weixin_39600837的博客 1852

从零到一:DETR模型在自定义数据集上的实战部署与调优

本文详细介绍了DETR模型在自定义数据集上的实战部署与调优过程,包括环境准备、数据转换、模型配置、训练技巧及问题排查。通过具体代码示例和实用建议,帮助开发者高效完成从零到一的DETR模型部署,特别适合目标检测领域的实践应用。

weixin_42524100的博客 463

python实现base64_Python实现base64算法

def encode_base64(text):r""">>> encode_base64('WELCOME to base64 encoding ????')'V0VMQ09NRSB0byBiYXNlNjQgZW5jb2Rpbmcg8J+YgQ=='>>> encode_base64('AÅᐃ????????')'QcOF4ZCD8JCAj/CfpJM='>>&gt...

weixin_39646695的博客 209

基于YOLOv8的端面小目标计数解决方案: 多头检测器+小缺陷到大缺陷一网打尽的GiraffeDet+Wasserstein Distance Loss | 助力工业小目标缺陷检测

端面小目标计数部署解决方案 | 亲测在工业小目标缺陷涨点明显,原始mAP@0.5 0.936提升至0.955

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1955

AIPex:AI + 自然语言驱动的浏览器自动化扩展

AIPex是一款革命性的Chrome扩展,通过AI技术实现自然语言驱动的浏览器自动化。它支持30多种自动化工具,包括智能标签页管理(分组、切换、批量操作)、页面内容提取(文本、链接、元数据)、交互元素操作(点击、滚动)以及表单智能填写等功能。用户只需用自然语言下达指令,即可快速完成复杂的浏览器操作,大幅提升工作效率。AIPex特别适合需要处理大量重复性网页操作的用户,如数据分析师、产品经理等。

blues_C的博客 1127

base64python_python base64

Base64是一种用64个字符来表示任意二进制数据的方法。用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。Base64的原理很简单,首先,准备一个包含64个字符的数组:['A', 'B', 'C', ...

weixin_39636645的博客 175

【LAMMPS学习】五、LAMMPS命令(1) LAMMPS 输入脚本

本部分描述了 LAMMPS 输入脚本的格式以及其中的命令如何用于定义 LAMMPS 模拟。主要包括以下内容。

荷塘阅色 2645

python 实现base64加密和base64解密算法

Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。由于 2 的 6 次方等于 64,所以每 6 个比特为一个单元,对应某个可打印字符。三个字节有 24 个比特,对应于 4 个 Base64 单元,即 3 个字节可表示成 4 个可打印字符。它可用来作为电子邮件的传输编码。在 Base64 中的可打印字符包括字母 A-Z、a-z、数字 0-9、加号 + 和斜杠 /,在编码后的数据最后,如果剩下一个、两个或三个字符,则以等号 = 填充,这样可使编码长度成为 4 的倍数。

luthane的博客 2391

fanuc机器人I/O分配

FANUC机器人在和其他外部设备进行通讯时,需要对信号进行配置。 在机器人处于UOP自动分配状态时,系统会自动检索已配对设备,并分配相应的机架号。 当我们需要手动对信号进行分配时,可参考以下机架号进行配置。 不同的通讯协议对应的机架号不同,外部通讯协议常用的机架号参考下表: 序号 机架号 通讯类型 1 0 Process I/O 2 1-15

haier123888的博客 1万+

ComfyUI整合包、秋叶ComfyUI、Florence节点报错下载并加载Florence2模型No module named ‘timm.layers‘、ComfyUI报错解决

步骤操作1打开2地址栏输入cmd并回车3输入命令:4安装完成后重新打开 ComfyUI,执行工作流,即可解决报错。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1243

python内置模块base64模块,base64编码解码

base64模块是用来作base64编码解码,常用于小型数据的传输。编码后的数据是一个字符串,其包括a-z、A-Z、0-9、/、+共64个字符,即可用6个字节表示,写出数值就是0-63.故三个字节编码的话就变成了4个字节,如果数据字节数不是3的倍数,就不能精确地划分6位的块,此时需要在原数据后添加1个或2个零值字节,使其字节数为3的倍数,然后在编码后的字符串后添加1个或2个‘=’,表示零值字节,所以事实上总共由65个字符组成。

老衲爱洗头的博客 3570

YOLOv8改进策略【卷积层】| DEConv: 强度信息与梯度特征融合的细节增强 适用于小目标与细节目标检测任务

本文记录的是利用 模块优化 的目标检测网络模型。(Detail-Enhanced Convolution,细节增强卷积)的设计旨在,解决 目标检测网络中传统普通卷积缺乏目标细节相关先验、对小目标边缘、目标与背景边界等关键细节捕捉能力不足的问题,同时避免引入额外参数量与计算开销,以适配 对实时推理性能与检测精度的双重需求。DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided atte

Limiiiing的博客 348

python实现base64解码_base64编码与python

一、base64编码工作原理base64模块是用来作base64编码解码的。这种编码方式在电子邮件中是很常见的。它可以把不能作为文本显示的二进制数据编码为可显示的文本信息。base64怎么工作的呢?把N字节的内容对应的8*N位, 每6位砍成1段,得到 (8*N)/6 个单元,每个单元的值,都在[0,63]之间,再把其值对应1个ascii字符,拼接起来,OK!这里以base64_encode(’PH...

weixin_39777875的博客 880

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

base64python_Base64及其Python实现

1. 什么是Base64Base64是一种基于64个可打印字符来表示二进制数据的表示方法Base64是一种编码方式,提及编码方式,必然有其对应的字符集合。在Base64编码中,相互映射的两个集合是:二进制数据{0, 1}{A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d,...

weixin_40003512的博客 327

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python中base64编码

base64编码原理、python使用、应用;将图片保存成字符串

orangerfun的博客 9147

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python3转base64_Python3读写base64格式

base64转换过程这几天写web,需要将用户上传的图片,实时显示到前端页面,然后通过Jcrop裁剪,并将裁剪后的图片通过canvas实时显示到前端,最后将canvas显示的图片装换为base64格式,传到后端django,但pillow是无法直接读取base64格式的图片的,所以特地查阅了一些资料,发现python3内置了base64转换函数,这里分享一下使用方法...importos,ba...

weixin_39692045的博客 1306

python3转base64_如何从Base64转换为字符串Python 3.2

def convertFromBase64 (stringToBeDecoded):import base64decodedstring=str.decode('base64',"stringToBeDecoded")print(decodedstring)returnconvertFromBase64(dGhpcyBpcyBzdHJpbmcgZXhhbXBsZS4uLi53b3chISE=)I ...

weixin_39737831的博客 2390

python中base64加密字典_Python中的Base64编码的加密与解密

Base64 可以干些啥?Base64编码的作用:由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。图片(and种子)base64编码传输一种常用的内容快速加密方法(不安全,防君子不防小人)为什么要使用 Base64 编码?在网页图片传输中,一般在处理极小、极简的一些图片的时候可以使用到base64编码将图片直接写入css文件展示到网...

weixin_39784263的博客 1069

python解码base64_Python Base64转码解码

encode, decode用来转码和 解码文件的,也可以对StringIO里的数据做编解码#读取文件进行编码inputRead = open('/Users/Mr_Chen/Desktop/test.jpeg','rb')outputWrit = open('/Users/Mr_Chen/Desktop/testEncode.txt','wb')#编码文件base64Test = base64....

weixin_42392425的博客 698
上一篇: 如何写一篇五彩斑斓的博客.append(可爱)
下一篇: 在生产环境(linux)下部署flask
Sun_Raiser
博客等级 码龄7年 2986粉丝 110原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sun_Raiser

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值