• 技术文章 >常见问题

    base64编码是什么

    coldplay.xixicoldplay.xixi2021-03-24 11:11:12原创521

    base64编码是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看【RFC2045~RFC2049】,上面有MIME的详细规范。

    本文操作环境:Windows7系统,Dell G3电脑。

    Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

    Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

    标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

    为解决此问题,可采用一种用于URL的改进Base64编码,它在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

    另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。

    此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。

    Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

    规则

    关于这个编码的规则:

    ①.把3个字节变成4个字节。

    ②每76个字符加一个换行符。

    ③.最后的结束符也要处理。

    例子

    转换前 11111111, 11111111, 11111111 (二进制)

    转换后 00111111, 00111111, 00111111, 00111111 (二进制)

    上面的三个字节是原文,下面的四个字节是转换后的Base64编码,其前两位均为0。

    转换后,我们用一个码表来得到我们想要的字符串(也就是最终的Base64编码),这个表是这样的:(摘自RFC2045)

    相关视频推荐:PHP编程从入门到精通

    以上就是base64编码是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:base64编码
    上一篇:hadoop三大组件是什么 下一篇:通信协议三要素是什么
    大前端线上培训班

    相关文章推荐

    • base64编码原理是什么?• base64编码有什么用?• uniapp如何将图片转base64• uniapp img base64不显示怎么办

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网