zoukankan      html  css  js  c++  java
  • python模块之base64

    转载自:http://blog.csdn.net/zhaoweikid/archive/2007/05/31/1633470.aspx 

    这篇文章转自我在百度的blog: http://hi.baidu.com/python23/
        base64模块是用来作base64编码解码的。这种编码方式在电子邮件中是很常见的。
    它可以把不能作为文本显示的二进制数据编码为可显示的文本信息。编码后的文本大小会增大1/3。

        闲话不说了,base64模块真正用的上的方法只有8个,分别是encode, decode, encodestring, decodestring, b64encode,b64decode, urlsafe_b64decode,urlsafe_b64encode。他们8个可以两两分为4组,encode,decode一组,专门用来编码和 解码文件的,也可以对StringIO里的数据做编解码;encodestring,decodestring一组,专门用来编码和解码字符串; b64encode和b64decode一组,用来编码和解码字符串,并且有一个替换符号字符的功能。这个功能是这样的:因为base64编码后的字符除 了英文字母和数字外还有三个字符 + / =, 其中=只是为了补全编码后的字符数为4的整数,而+和/在一些情况下需要被替换的,b64encode和b64decode正是提供了这样的功能。至于什 么情况下+和/需要被替换,最常见的就是对url进行base64编码的时候。urlsafe_b64encode和urlsafe_b64decode 一组,这个就是用来专门对url进行base64编解码的,实际上也是调用的前一组函数。
    下面看看例子:

    #-*- encoding:gb2312 -*-
    import base64
    import StringIO

    = "this is a test"
    = base64.encodestring(a) # 对字符串编码
    print b
    print base64.decodestring(b) # 对字符串解码

    = StringIO.StringIO()
    c.write(a)
    = StringIO.StringIO()
    = StringIO.StringIO()
    c.seek(0)
    base64.encode(c, d) 
    # 对StringIO内的数据进行编码
    print d.getvalue()
    d.seek(0)
    base64.decode(d, e) 
    # 对StringIO内的数据进行解码
    print e.getvalue()

    = "this is a +test"
    = base64.urlsafe_b64encode(a) # 进行url的字符串编码
    print b
    print base64.urlsafe_b64decode(b)


    上面的encode函数和decode函数的参数其实还可以是文件对象的,那的象这样:

    f1 = open('aaa.txt''r')
    f2 
    = open('bbb.txt''w')

    base64.encode(f1, f2)

    f1.close()
    f2.close()
  • 相关阅读:
    BSGS
    斯特林数 笔记
    「CF932E」Team Work
    「hihoCoder1869」Items
    「Luogu1345」[USACO5.4]奶牛的电信Telecowmunication
    「Luogu4363/BZOJ5248」[九省联考2018]一双木棋chess
    「Luogu2522」[HAOI2011]Problem b
    狄利克雷卷积学习笔记
    莫比乌斯函数学习笔记
    欧拉函数学习笔记
  • 原文地址:https://www.cnblogs.com/sislcb/p/1342824.html
Copyright © 2011-2022 走看看