在线 base64 编码解码器
0 字符
0 字符
0
原始字节数
0
编码后字节数
0%
大小变化
0 字符
0 字符
0 行
0 行
概述
什么是 Base64?
Base64 是一种基于 64 个可打印字符来表示二进制数据的编码方法。它常用于在需要处理文本数据的场合中传输、存储一些二进制数据,包括MIME电子邮件、XML复杂数据等场景。
Base64 的基本原理
Base64 编码将每 3 个 8位字节 (3×8=24位) 转换为 4 个 6 位字节(4×6=24位),然后将这些6位字节映射到 Base64 字母表中的特定字符。
Base64字母表包含:
- 大写字母 A-Z(26个)
- 小写字母 a-z(26个)
- 数字 0-9(10个)
- 特殊字符 "+"和"/"(2个)
- 填充字符 "="(用于末尾补位)
为什么需要 Base64 编码?
- 兼容性问题:某些传输协议(如SMTP电子邮件)最初设计为传输 7 位 ASCII 字符,不能直接传输二进制数据
- 数据安全:虽然不是加密,但可以让数据不易被直接识别
- URL安全:Base64 编码后的数据不包含特殊字符,适合在URL中传输
在线 Base64 编码解码器功能
1. 编码功能
将原始文本或二进制数据转换为Base64格式:
// JavaScript示例编码函数 function base64Encode(str) { return btoa(unescape(encodeURIComponent(str))); } // 使用示例 const originalText = "Hello, 世界!"; const encodedText = base64Encode(originalText); console.log(encodedText); // "SGVsbG8sIOS4lueVjCE="
2. 解码功能
将Base64编码的字符串还原为原始数据:
// JavaScript示例解码函数 function base64Decode(str) { return decodeURIComponent(escape(atob(str))); } // 使用示例 const encodedText = "SGVsbG8sIOS4lueVjCE="; const decodedText = base64Decode(encodedText); console.log(decodedText); // "Hello, 世界!"
3. 文件处理
高级的在线Base64工具还支持文件编码/解码:
- 上传文件自动编码为Base64字符串
- 将Base64字符串解码并下载为原始文件
Base64编码过程详解
让我们以字符串"Man"为例,看看Base64编码的具体步骤:
获取ASCII码:
- 'M' → 77
- 'a' → 97
- 'n' → 110
转换为二进制(8位):
- 77 → 01001101
- 97 → 01100001
- 110 → 01101110
合并为24位:010011010110000101101110
分割为4个6位组:
- 010011
- 010110
- 000101
- 101110
转换为十进制:
- 010011 → 19
- 010110 → 22
- 000101 → 5
- 101110 → 46
查Base64字母表:
- 19 → T
- 22 → W
- 5 → F
- 46 → u
结果:"TWFu"
Base64编码的填充机制
当原始数据长度不是3的倍数时,需要进行填充:
- 剩余1字节:补2个"="
- 剩余2字节:补1个"="
例如:
- "A" → "QQ=="
- "AB" → "QUI="
- "ABC" → "QUJD"
在线Base64工具的使用场景
- 电子邮件附件:将二进制附件编码为文本形式传输
- 数据URI:在HTML/CSS中嵌入小图片
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...">
- API认证:Basic认证中使用Base64编码用户名密码
- JSON传输:在JSON中安全传输二进制数据
Base64编码的注意事项
- 体积增加:编码后数据大小会增加约33%
- 不是加密:Base64只是编码,不是加密,敏感数据需要额外加密
- URL安全变种:标准Base64中的"+"和"/"在URL中需要替换为"-"和"_"
- 性能考虑:大量数据编解码可能影响性能
如何选择在线Base64工具?
- 支持双向转换(编码/解码)
- 支持文件处理功能
- 提供URL安全模式
- 实时预览功能
- 无广告、无数据收集
常见编程语言中的Base64实现
Python
import base64 # 编码 encoded = base64.b64encode(b"Hello World").decode('utf-8') print(encoded) # SGVsbG8gV29ybGQ= # 解码 decoded = base64.b64decode(encoded).decode('utf-8') print(decoded) # Hello World
Java
import java.util.Base64; // 编码 String encoded = Base64.getEncoder().encodeToString("Hello World".getBytes()); System.out.println(encoded); // SGVsbG8gV29ybGQ= // 解码 String decoded = new String(Base64.getDecoder().decode(encoded)); System.out.println(decoded); // Hello World
PHP
// 编码 $encoded = base64_encode("Hello World"); echo $encoded; // SGVsbG8gV29ybGQ= // 解码 $decoded = base64_decode($encoded); echo $decoded; // Hello World