什么是Base64编码?
一种使用64个ASCII字符将二进制数据编码为文本的方法。
Base64编码·解码
一种使用64个ASCII字符将二进制数据编码为文本的方法。
在邮件、JSON、HTML等文本格式中安全传输二进制数据。
是的,比原始数据大约增加33%。
Base64把二进制数据——那种电脑喜欢但文本系统消化不了的东西——转换成普通ASCII字符。到处都能看到它:邮件附件、HTML里直接嵌入的图片、API认证token。如果你见过一长串看起来随机的字母数字最后以"=="结尾,那就是Base64。
会,大概大33%。道理很直接:每3个字节的原始数据变成4个ASCII字符。你换来的是兼容性(只要能传文本的地方就能用),代价是文件变大一些。
Base64拿3个字节(24位)的数据,切成四组每组6位。每个6位的块对应64个字符中的一个——A到Z、a到z、0到9,加号(+)和斜杠(/)。如果输入的长度不能被3整除,末尾就会出现那些"="填充字符。结果就是:任何二进制数据——图片、文件、什么都行——都变成安全的、可打印的文本。
邮件是最早的用例——MIME编码靠Base64把附件变成能穿过邮件服务器的文本。前端开发者用它通过data URI把小图片直接嵌入CSS或HTML里,省掉一次HTTP请求。如果你配置过Basic Auth的API认证,你就是在Base64编码你的用户名和密码。只要需要把二进制数据塞进JSON、XML或者任何其他纯文本格式里,它就会出现。
Base64增加33%的体积,这是换取近乎万能兼容性的代价。Base32的开销更大(60%),但不分大小写,在一些特殊场景有用。十六进制编码直接把数据翻倍,但调试的时候最好读。还有URL安全版的Base64,把+和/替换成-和_,这样编码后的数据不会破坏URL。根据数据要去哪里、体积有多重要来选合适的。