Python语言入门7.4-内建模块base64
小标 2018-06-20 来源 : 阅读 731 评论 0

摘要:本文主要向大家介绍了Python语言入门的内建模块base64,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助。

本文主要向大家介绍了Python语言入门的内建模块base64,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助。

有时候,我们用noepad++或者记事本打开图片或者程序等文件的时候会显示大量的乱码,主要原因是这些文件编码的时候并不是字符串编码的。如果我们想把这些文件正常显示为字符,这个时候就可以用到base64,它就是一种编码、解码的规则。 
正式介绍一下base64的原理: 
(1)准备一个包含64个字符的数组:

['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']

(2)对二进制数据进行处理,每3个字节一组,一共是3x8=24bit,划为4组,每组正好6个bit:2^6 = 64,刚好可以用来索引(创造这个规则的人真是聪明)。如果字符数量不是3的整数倍,在最后补上0x/00,并用=或者==来表示。

所以,Base64编码会把3字节的二进制数据编码为4字节的文本数据,长度增加33%,好处是编码后的文本数据可以在邮件正文、网页等直接显示。 
还是实例具有说服力:

In [1]: import base64

In [2]: string1 = base64.b64encode(b'nihaoa')

In [3]: string1Out[3]: b'bmloYW9h'

In [4]: string2 = base64.b64encode(b'nihao')

In [5]: string2Out[5]: b'bmloYW8='

In [6]: string3 = base64.b64encode(b'niha')

In [7]: string3Out[7]: b'bmloYQ=='

第一个刚好是3的整数倍,第二个差一个,所以补了=,第三个差2个所以补了2个==

由于标准的Base64编码后可能出现字符+和/,在URL中就不能直接作为参数,所以又有一种”url safe”的base64编码,其实就是把字符+和/分别变成-和_:

>>> base64.b64encode(b'i\xb7\x1d\xfb\xef\xff')
b'abcd++//'
>>> base64.urlsafe_b64encode(b'i\xb7\x1d\xfb\xef\xff')
b'abcd--__'
>>> base64.urlsafe_b64decode('abcd--__')
b'i\xb7\x1d\xfb\xef\xff'

base64还可以自己定义字符顺序,这样就可以用来加密了,有兴趣可以自己玩一把。

以上就介绍了Python的相关知识,希望对Python有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程