Base64编码是什么?原理、用途与在线工具
2026年2月 · 阅读时间 4分钟
Base64是开发中最常见的编码方式之一。你可能在JWT Token、邮件附件、Data URL中都见过它,但你真的了解它的原理吗?
什么是Base64?
Base64是一种将二进制数据转换为ASCII文本的编码方式。它使用64个可打印字符(A-Z、a-z、0-9、+、/)来表示任意二进制数据。
原文:Hello World
Base64:SGVsbG8gV29ybGQ=
编码原理
Base64的编码过程:
- 将原始数据转换为二进制比特流
- 每6个比特为一组(因为2⁶ = 64)
- 每组映射到Base64字符表中的一个字符
- 如果最后不足6位,用0补齐,输出用 = 填充
示例:编码 "Hi"
H = 01001000, i = 01101001
拼接:010010 000110 100100(补2个0)
查表:S(18) G(6) k(36) =(填充)
结果:SGk=
为什么需要Base64?
很多传输协议(如HTTP、SMTP、JSON)只支持文本数据。Base64让我们可以:
- 在文本中嵌入二进制 — 图片、文件、加密数据都可以变成文本
- 避免特殊字符问题 — 不会被URL编码、XML解析等破坏
- 跨平台兼容 — 纯ASCII字符,任何系统都能处理
常见使用场景
- Data URL — 在CSS/HTML中直接嵌入小图片:
data:image/png;base64,iVBOR... - JWT Token — Header和Payload都是Base64编码的JSON
- 邮件附件 — MIME协议用Base64传输附件
- API传输 — 在JSON中传递文件或图片数据
- Basic认证 — HTTP Basic Auth将用户名:密码做Base64编码
- 加密数据存储 — 加密后的二进制数据用Base64存为文本
注意事项
⚠️ Base64不是加密!它只是编码,任何人都能解码
⚠️ 编码后体积增大约33%(3字节变4字符)
⚠️ 大文件不适合Base64(会显著增大体积和内存占用)
⚠️ URL安全的Base64用 - 和 _ 替代 + 和 /
各语言实现
// JavaScript
btoa('Hello') // 编码 → "SGVsbG8="
atob('SGVsbG8=') // 解码 → "Hello"
# Python
import base64
base64.b64encode(b'Hello') # b'SGVsbG8='
// Java
Base64.getEncoder().encodeToString("Hello".getBytes())
在线工具
需要快速编解码?我们提供两个免费工具:
- Base64文本编解码 — 文本与Base64互转
- 图片Base64转换 — 图片与Base64 Data URL互转
更多开发者工具请访问 www.cyunyun.com。