Protobuff在反序列化期间丢失数据

时间:2016-04-26 05:34:59

标签: protocol-buffers protobuf-net

我目前正在使用Google Protocol Buffer来发送包含多个整数数组的信息。 问题是当使用1个超过16个数组的对象时,每个数组大约有20个元素,数组中的一些信息会被破坏(变成另一个数字),其余的数组将为null。 任何人都知道为什么会发生这种情况以及如何解决它?

1 个答案:

答案 0 :(得分:1)

从图像来看,这就是protobuf-net。我发现它不太可能是图书馆内的一个错误(虽然我不会排除它);这种错误的最常见原因是在调用代码中(即你的位,我们无法看到的位),并包括:

  • 将二进制数据视为字符串,即文本文件 - 和/或对基本上不是文本的数据使用文本编码
  • 重写缓冲区而不会在缩短内容时正确跟踪新结束(这同样适用于文件)
  • 没有正确读取/写入流(不检查来自Read的返回值等)

如果您显示用于读写的代码,我确定我们可以找到问题,但我会下注好钱,这是上述之一(或类似的东西)。