什么是Base64
Base64是一种基于64个可打印字符来表示二进制数据的编码方式。它常用于在文本协议中传输二进制数据,确保数据在传输过程中不被损坏。
Base64编码将二进制数据转换为由64个字符组成的文本格式,这些字符包括:A-Z, a-z, 0-9, +, /,以及填充字符=。
Base64广泛应用于电子邮件附件、网页图片嵌入、API数据传输等场景。它的核心思想是"用可打印字符表示不可打印的二进制数据"。
编码原理
Base64编码的核心原理是将3个字节(24位)的二进制数据转换为4个Base64字符。具体步骤如下:
- 将原始数据按3个字节一组进行分组
- 将每组3个字节(24位)重新划分为4个6位的单元
- 每个6位单元对应一个0-63的数值
- 根据Base64字符表将每个数值映射为对应的字符
- 如果最后一组不足3个字节,用等号(=)填充
以字符串 "Man" 为例,编码后的Base64结果为 "TWFu"。
应用场景
1. 电子邮件附件:电子邮件系统使用SMTP协议传输文本,二进制附件需要先编码为Base64文本格式,接收方再解码还原为原始文件。
2. JSON数据传输:在API接口中,二进制数据(如图片、文件)不能直接放入JSON中传输,通常编码为Base64字符串作为JSON字段的值。
3. HTTP基本认证:HTTP Basic Auth将用户名和密码拼接后使用Base64编码,放入请求头的Authorization字段中。
4. 网页图片嵌入:在HTML和CSS中,可以将小图片直接以Base64格式嵌入,减少HTTP请求次数,提升页面加载速度。
图片Base64编码
图片Base64编码是将图片文件转换为Base64字符串,可以直接嵌入到HTML或CSS中使用。格式如下:data:[mime-type];base64,[data]
例如:<img src="data:image/png;base64,iVBORw0KGgo...">
注意:Base64编码后的数据体积比原始二进制数据大约增加33%,因此不适合对大图片进行Base64编码。建议只对10KB以下的小图标使用此方式。