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
a = " this is a test "
b = base64.encodestring(a) # 对字符串编码
print b
print base64.decodestring(b) # 对字符串解码
c = StringIO.StringIO()
c.write(a)
d = StringIO.StringIO()
e = StringIO.StringIO()
c.seek(0)
base64.encode(c, d) # 对StringIO内的数据进行编码
print d.getvalue()
d.seek(0)
base64.decode(d, e) # 对StringIO内的数据进行解码
print e.getvalue()
a = " this is a +test "
b = base64.urlsafe_b64encode(a) # 进行url的字符串编码
print b
print base64.urlsafe_b64decode(b)
import base64
import StringIO
a = " this is a test "
b = base64.encodestring(a) # 对字符串编码
print b
print base64.decodestring(b) # 对字符串解码
c = StringIO.StringIO()
c.write(a)
d = StringIO.StringIO()
e = StringIO.StringIO()
c.seek(0)
base64.encode(c, d) # 对StringIO内的数据进行编码
print d.getvalue()
d.seek(0)
base64.decode(d, e) # 对StringIO内的数据进行解码
print e.getvalue()
a = " this is a +test "
b = 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()
f2 = open( ' bbb.txt ' , ' w ' )
base64.encode(f1, f2)
f1.close()
f2.close()
###########
简便用法
>>> a='123'
>>> a
'123'
>>> b=a.encode("hex")
>>> b
'313233'
>>> b.decode("hex")
'123'