python基础 python3中str和bytes

str和bytes在python3中做了区分;bytes表示二进制字节、str表示文本字符串;文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,两者在混合使用的时候,需要编码转换

 字符串和字节包之间的界线是必然的,字符串可以编码成字节包,而字节包可以解码成字符串,下面的图解非常重要,务请牢记于心:

 

举例:

>>>'€20'.encode('utf-8')    # encode(参数)表示被转换之前的格式类型
b'\xe2\x82\xac20'       # b表示是二进制格式
>>> b'\xe2\x82\xac20'.decode('utf-8') #
'€20'

str->bytes:encode编码; 编码就是将字符串转换成字节码,涉及到字符串的内部表示。
bytes->str:decode解码;  解码就是将字节码转换为字符串,将比特位显示成字符。

 

在纯粹操作字符串类型的数据时,不需要考虑字符串和二进制的转换,只有在将字符串编码成字节包(例如,使用socket网络开发,在信道上发送它们;python3都是以二进制传输)或从字节包解码字符串(在编程时候,如果程序只能处理文本不能处理二进制,需要转换)时,我们才会开始关注这点。在计算机中,视频是以二进制格式存储、文本是以字符串格式存储(实际上也可以强制存储为二进制)。

posted @ 2017-10-27 14:04  nianyuxue87  阅读(215)  评论(0编辑  收藏  举报