刚刚突然看到有个代码面有base64,想到有很多情况下需要进行转换,很多不可见的东西可以用base64进行转换成可见的字符,比如图片转字符,故以此为目的,写下此篇。
文字
- 因为3.x中字符都为unicode编码,而b64encode编码转换出来为byte类型,所以,须用
str()
转换,否则将转换出多于字符,解码时由于unicode编码,会出现xe5xad类,故,utf-8
转码,对比代码如下:
import base64
i = "字符串"
i_en = base64.b64encode(i.encode("utf-8")) #en为编码
print(i_en)
print(str(i_en,"utf-8")) #str转换为字符串
i_de = base64.b64decode(i_en) #de为解码
print(i_de)
print(str(i_de,"utf-8"))
打印结果:
b'5a2X56ym5Liy'
5a2X56ym5Liy
b'\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2'
字符串
图片
- 图片编码解码,可将jpg格式转成base64后解码成png格式,我也不知道为啥,反正就解码了。
import base64
with open("bizhi.jpg","rb") as f: #转为二进制
base64_data = base64.b64encode(f.read()) #加密
print(str(base64_data,"utf-8"))
file=open('1.txt','wt') #写成文本格式
file.write(str(base64_data,"utf-8"))
# file.write(base64_data) #错误输出
file.close()
with open("1.txt","r") as f:
imgdata = base64.b64decode(f.read())
file_de = open("1.jpg","wb")
file_de.write(imgdata)
file_de.close()
1
555
lzpomscial
哈哈哈,写的太好了https://www.cscnn.com/