当前位置: 首页 > 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)

相关文章:

  • 【极速版 -- 大模型入门到进阶】大模型如何学会使用对应的工具 (第二弹)
  • 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拦截器
  • 马克思主义理论研究教学名师系列访谈|石书臣:思政课是落实立德树人的关键
  • 柳向春:关于美国国会图书馆所藏《全芳备祖》的一些故事
  • 工人日报关注跟着演出去旅游:票根经济新模式兴起,让过路客变过夜客
  • 郭旭涛转任河北省科协党组书记、常务副主席,曾任团省委书记
  • 马斯克“星舰基地”成为新城镇,首任市长为SpaceX员工
  • 新加坡国会选举投票抽样结果公布,执政党已获超半数议席