bytes和bytearray

Posted ProfiBus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bytes和bytearray相关的知识,希望对你有一定的参考价值。

bytes

bytes是Python 3中特有的,Python 2 里不区分bytes和str。

  • Python 2中

>>> type(b‘xxxxx‘)
<type ‘str‘>
>>> type(‘xxxxx‘)
<type ‘str‘>
  • Python 3中

>>> type(b‘xxxxx‘)
<class ‘bytes‘>
>>> type(‘xxxxx‘)
<class ‘str‘>

区别

  • bytes是byte的序列,而str是unicode的序列。

  • str 使用encode方法转化为 bytes

  • bytes通过decode转化为str
    str转换成bytes:

In [9]: str1=‘人生苦短,我用Python!‘

In [10]: type(str1)
Out[10]: str

In [11]: b=str1.encode()

In [12]: b
Out[12]: b‘\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!‘

In [13]: type(str1.encode())
Out[13]: bytes

bytes转换成str:

In [22]: b
Out[22]: b‘\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!‘

In [23]: type(b)
Out[23]: bytes

In [24]: b.decode()
Out[24]: ‘人生苦短,我用Python!‘

In [25]: type(b.decode())
Out[25]: str

在Python 2中由于不区分str和bytes所以可以直接通过encode()和decode
()方法进行编码解码。而在Python 3中把两者给分开了这个在使用中需要注意。实际应用中在互联网上是通过二进制进行传输,所以就需要将str转换成bytes进行传输,而在接收中通过decode()解码成我们需要的编码进行处理数据这样不管对方是什么编码而本地是我们使用的编码这样就不会乱码。

bytearray

bytearray和bytes不一样的地方在于,bytearray是可变的。

In [26]: str1
Out[26]: ‘人生苦短,我用Python!‘

In [28]: b1=bytearray(str1.encode())

In [29]: b1
Out[29]: bytearray(b‘\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!‘)

In [30]: b1.decode()
Out[30]: ‘人生苦短,我用Python!‘

In [31]: b1[:6]=bytearray(‘生命‘.encode())

In [32]: b1
Out[32]: bytearray(b‘\xe7\x94\x9f\xe5\x91\xbd\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!‘)

In [33]: b1.decode()
Out[33]: ‘生命苦短,我用Python!‘

以上是关于bytes和bytearray的主要内容,如果未能解决你的问题,请参考以下文章

python数据l类型 ——bytes 和 bytearray

bytes和bytearray总结

bytes和bytearray

笔记bytes和bytearray还有memoryview

笔记bytes和bytearray还有memoryview

笔记bytes和bytearray还有memoryview