为什么需要使用base64编码
- 使用HTTP协议传输二进制数据可能会出现无法预知的错误,参考有关使用HTTP协议传输二进制文件
- 很多场景下的数据传输要求数据只能由简单通用的字符组成,比如HTTP协议要求请求的首行和请求头都必须是ASCII编码
- 很多比较老的协议还是只支持纯文本的,比如SMTP协议
- 提升效率:用
Data URL
技术,允许使用Base64对图片或其他文件的二进制数据进行编码,将其作为文本字符串嵌入网页中,避免不必要的外部资源加载
- 参考资料
base64如何编码?
- 对应一个base 64 编码表
- 包含大小写字母52个,0-9的数字10个,还有
+
和/
两个符号
- 每3个原始字符编码成4个字符
- 编码后的每个字符最高2位一定是0
- 范围是[0, 63]
- 如果字符数不是3的倍数,后面用零补齐
- 末尾的
0x00000000
用=
表示
- 所以细心的读者可以常常发现:base64编码后的字符串最后会有
=
符号
- 编码后增加换行符
- base64在RFC2045有规定:Base64一行不能超过76个字符,超过则添加回车换行符(windows平台下则为
\n
)
base如何解码
- 去掉多余的
=
号
- 只需要按照编码表,逆向转成二进制数据
- 每个字符的二进制去掉最高的两位,最后拼接在一起,就是编码前的二进制数据流
常用的C++ base64 编码和解码的库
总结
- base64将二进制字符转换成64个可见的文本字符,在某些场景下方便传输
- base64不是一种加密方法,操作的本质不是加密
posted @
2019-10-21 00:06
HelloWooo
阅读(
355)
评论()
编辑
收藏
举报