序列化/反序列化
作者:互联网
1、为什么要序列化
- 因为TCP/IP协议只支持字节数组的传输,不能直接传对象。
- 当两个进程在进行远程通信时,彼此可以发送各种类型的数据。
- 无论是何种类型的数据,都会以二进制序列的形式在网络上传送。
- 发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。
Tips:对象序列化的结果一定是字节数组!
1.1 Bytes(字节)与Bytearray(二进制数组)
- bytes是Python 3中特有的(bytes及bytes;str是str),Python 2 里的数据是不区分bytes和str(str和bytes都是bytes;unicode是unicode)。
- bytearray和bytes不一样的地方在于,bytearray是可变的。
1.2二进制序列
'人生苦短,我用Python!'
'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'
2、bytes与bytearray的区别
- bytes是byte的序列,而str是unicode的序列。
- str 使用encode方法转化为 bytes
- bytes通过decode转化为str
2.1下面是python3的小例子:
>>> str1='人生苦短,我用python!'
>>> type(str1)
<class 'str'>
>>> b=str1.encode()
>>> b
b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8python!'
>>> type(b)
<class 'bytes'>
>>> c=b.decode()
>>> c
'人生苦短,我用python!'
>>> type(c)
<class 'str'>
>>>
2.2如图:
标签:字节,bytes,xe7,str,序列,序列化 来源: https://www.cnblogs.com/suzhitester/p/15176672.html