python 使用ParseFromString反序列化bytes报错
google.protobuf.message.DecodeError: Error parsing message
python 使用socket测试protobuf
以下为解包代码
def recv(self):
data = self.client.recv(20000)
print("返回包总长度:", len(data))
"""固定值"""
header = struct.unpack('!i', data[0:4])[0]
moduleId = struct.unpack('!h', data[4:6])[0]
cmdId = struct.unpack('!h', data[6:8])[0]
resultId = struct.unpack('!i', data[8:12])[0]
messageLen = struct.unpack("!i", data[12:16])[0]
messagePushLen = struct.unpack('!i', data[messageLen+16:])[0]
print(header, moduleId, cmdId, resultId, messageLen, messagePushLen)
loginResp = pb2.MsgRespUserLogin()
print(loginResp.ParseFromString(data[16:messageLen + 16]))
代码运行到 print(loginResp.ParseFromString(data[16:messageLen + 16]))
时报错,报错如下:
image1220×922 101 KB
打断点,可以看到正确的数据,但是显示不完全
image1889×924 138 KB
点击view显示如下
image1614×956 137 KB