码迷,mamicode.com
首页 > 其他好文 > 详细

关于字符,字节与base64编码的理解

时间:2018-04-14 11:22:25      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:方法   解码   with open   结果   可选参数   二进制流   有助于   英文   nal   

字符是用来显示的,如中文字符,英文字符,其类型我字符(串)类型;

字节是用来存储的,一个字节为8bit。由于字节是8位,无法对中文编码,因此诸如a=b‘中文‘的写法是错误的。但英文标点数字是可以的,如a=b‘abc‘;

字符要存储在计算机中或进行传输,就要转化成字节,就涉及的编码方式。为了兼顾统一和内存节省的原则,编码方式有很多。

对字符编码采用encode(encoding,optional)方法,参数1为编码方式,如utf-8,base64,参数2为可选参数。

对字节解码用decode(encoding),参数表示解码方式。

记住:带b的类型为字节(bytes)型,不带b的,为字符类型。二者是不同的数据结构。

 

base64模块:

产生原因:base64模块将一串字节码(二进制流)以6个bit为一组进行编码,(因为6个比特表示的字符在ascii码中是可见字符),所以base64的存在是将所有的字符(可见不可见)转化成可见字符。这样做的原因是避免传输过程中因为不可见字符的存在而容易出错。

编码方式:由于是6个bit为一组,而正常编码是8bit为一组,因此3个字节的字符可以编码出4个字符,这4个字符都可见。

因为是将字节码编码,所以base64.b64encode()只能处理字节流。

base64编码可以将二进制文件(如图片,音频等)编码成文本文件进行传输,到目的地后,再解码成二进制文件,这样有助于加快传输(因为不同类型的数据再网络上以不同的方式传送,耗时)。

例如图片:

import b64base
with open(‘cat.jpg‘,‘rb‘) as fp:
    bPic=fp.read()#将图片转化成二进制数据
b64Pic=base64.b64encode(bPic)#将图标编码成b64格式(仍然是二进制)
b64strPic=b64Pic.decode()#将二进制转成字符串
 
with open(‘cat.jpg‘,‘wb‘) as fp:
    bPic=base64.b64decode(b64strPic)#将b64转化成二进制(这里使用b64Pic也可以,b64解码既可以是字符串也可以是对应字符串二进制,结果都一样)
    fp.write(bPic)#转化成图片

 

关于字符,字节与base64编码的理解

标签:方法   解码   with open   结果   可选参数   二进制流   有助于   英文   nal   

原文地址:https://www.cnblogs.com/zhuluqing/p/8830456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!