当前位置: 首页 > news >正文

为什么要base64编码

为什么要base64编码

Base64 是一种 基于ASCII的 二进制到文本编码 方法,主要用于将二进制数据转换成可打印的 ASCII 字符,以便安全传输和存储,例如在电子邮件、URL 以及 JSON Web Token(JWT)中常见。

那ASCII为什么不行呢?

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于7位或8位二进制的字符编码标准,用于表示文本字符。标准ASCII码范围是0-127,扩展 ASCII 码(如 ISO-8859-1 或 Windows-1252)范围128-255。

好的总结下,二进制文件(如图片、音频、视频、压缩文件)可能包含任意8位字节(0-255),其中许多值无法用标准ASCII直接表示。

问题直接传输 ASCIIBase64 解决方案
无法表示所有二进制数据ASCII 仅适用于文本,不能覆盖 0-255 的所有字节Base64 使用 6 位编码,转换成可打印字符
控制字符可能影响传输CRLFNULL 等字符可能导致协议误解Base64 避免了控制字符问题
某些协议不支持 8 位字符早期 SMTP、HTTP 可能不支持Base64 仅使用可打印字符,兼容性更好
数据完整性风险特殊字符可能被错误解析或丢弃Base64 避免这些问题
难以调试二进制数据不直观Base64 仍然是可打印文本,便于查看

上方表格来自chatgpt总结。

代码

import base64
from scipy.io import wavfile

if __name__ == "__main__":
    readPath = "2001000001.wav"

    with open(readPath, "rb") as fr:  # 二进制读取
        audioData = fr.read()

    if audioData:
        b64Data_bytes = base64.b64encode(audioData)  # 转换为base64编码
        b64Data_string = b64Data_bytes.decode("utf8")  # 转换为字符串

    print(b64Data_string)

    audioData = base64.b64decode(b64Data_string)  # 字符串解码为二进制数据,假设服务端请求也是字符串格式
    with open("my.wav", "wb") as fw:
        fw.write(audioData)

http://www.dtcms.com/a/92829.html

相关文章:

  • 【极速版 -- 大模型入门到进阶】大模型如何学会使用对应的工具 (第二弹)
  • PyTorch量化技术教程:第四章 PyTorch在量化交易中的应用
  • 【漏洞复现】Apache Tomcat partial PUT文件上传反序列化漏洞复现(CVE-2025-24813)
  • 【JavaScript 简明入门教程】为了Screeps服务的纯JS入门教程
  • 第12章:优化并发_《C++性能优化指南》notes
  • P1722 矩阵Ⅱ - 洛谷
  • 26考研——查找_树形查找_二叉排序树(BST)(7)
  • JavaScript 改变 HTML 内容
  • Spring JdbcTemplate 万字详解(通俗易懂)
  • 数据库——MySQL基础
  • 解决Ubuntu服务器多网口使用情况下外网老掉线问题
  • 容联云创始人孙昌勋:金融大模型应用,做出场景化应用比技术的先进更重要
  • Photoshop 2025安装教程包含下载安装包,2025最新版图文安装教程
  • 跨层封装简单介绍
  • 简单的括号匹配
  • stack和queue
  • Hadoop/Spark 生态
  • 【区块链安全 | 第六篇】NFT概念详解
  • MFC中字符串string类型和CString类型互转方法
  • SpringMVC拦截器
  • 简单聊聊Oracle和MySQL数据库的区别和使用场景
  • 基于yolov11的棉花品种分类检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • TDengine 集群节点管理
  • SQL的核心基础语法 | 快速入门MySQL
  • 【mysql疑难杂症】mysql数据库指定ip远程连接数据库
  • Mybatis中 ${} 和 #{} 的区别
  • C++项目:高并发内存池_下
  • dell 台式机 电脑 纽扣电池 如何取下?
  • 【NLP 44、实践 ⑪ 用Bert模型结构实现自回归语言模型的训练】
  • c#个人向总结