python 使用ParseFromString反序列化bytes报错 ```google.protobuf.message.DecodeError: Error parsing message```

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]))

问题

  1. 代码运行到 print(loginResp.ParseFromString(data[16:messageLen + 16]))时报错,报错如下:
  2. 打断点,可以看到正确的数据,但是显示不完全

    点击view显示如下

期望答案

  1. ParseFromString反序列化报错解决方案
  2. 打断点可以显示,控制台打印报错的原因,并且断点看的时候显示不全,是不是因为pycharm的问题,把数据截断了