python 7: bytes类型

作者: 金石明镜 | 来源:发表于2019-11-08 21:32 被阅读0次

python增加了一个类型:bytes,它表达二进制数据。

在 3.x 中,字符串和二进制数据完全区分开。

文本总是 Unicode,由 str 类型表示,二进制数据则由 bytes 类型表示。

Python 3 不会以任意隐式的方式混用 str 和 bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。

bytes 对象只负责以字节(二进制格式)序列来记录数据,至于这些数据到底表示什么内容,完全由程序决定。如果采用合适的字符集,字符串( str)可以转换成字节串(bytes);反过来,字节串(bytes)也可以恢复成对应的字符串(str)。

由于 bytes 保存的就是原始的字节(二进制格式)数据,因此 bytes 对象可用于在网络上传输数据,也可用于存储各种二进制格式的文件,比如图片、音乐等文件。

bytes 类型与 str 类型,二者的方法仅有 encode() 和 decode() 不同。

bytes 类型数据需在常规的 str 类型前加个 b 以示区分,例如 b'abc'。

只有在需要将 str 编码(encode)成 bytes 的时候,比如:通过网络传输数据;或者需要将 bytes 解码(decode)成 str 的时候,我们才会关注 str 和 bytes 的区别。

str转换为bytes时,最好使用它的encode()方法。

bytes转换为str时,最好使用它的decode()方法。

因为不需要使用参数。

也可以使用函数str()将bytes转换为str,使用函数bytes将str转换为bytes,但是函数需要参数,特别是编码参数。没有前面的方法简便。

str->bytes用encode();   bytes->str用decode()

怎么记住,不至于记反呢?

注意:encode是编码,decode是解码。

在电报中,编码是将可读的转换为不可读的,用于发送;而解码是将不可读的电文转换为可读的文字。

str是可读的,bytes是不可读的。这样就可以记住了。

一、bytes 转 str

方法1:使用bytes的decode()方法。最好用这个方法。

例1:

>>>t=b'abc'

>>>a=t.decode()

>>>type(a)

<class 'str'>

>>>print(a)

abc

例2:

>>>t='中国'.encode()

>>>a=t.decode()

>>>type(a)

<class 'str'>

>>>print(a)

中国

方法2:使用str()函数

例1:

>>>t=b‘abc'

>>>a=str(t,'ascii')

>>>type(a)

<class 'str'>

>>>print(a)

abc

例2:

>>>t=bytes('中国','utf-8')

>>>a=str(t,'utf-8')

>>>type(a)

<class 'str'>

>>>print(a)

中国

二、str 转 bytes

方法1:使用str的encode()方法。最好用这个方法。

例1:

>>>a='abc'

>>>t=a.encode()

>>>type(t)

<class 'bytes'>

例2:

>>>b='中国'

>>>s=b.encode()

>>>type(s)

<class 'bytes'>

方法2:使用bytes()函数

例1:

>>>a='abc'

>>>t=bytes(a,'ascii')

>>>type(t)

<class 'bytes'>

例2:

>>>a='中国'

>>>t=bytes(a,'utf-8')

>>>type(t)

<class 'bytes'>

相关文章

网友评论

    本文标题:python 7: bytes类型

    本文链接:https://www.haomeiwen.com/subject/slawbctx.html