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