在下面的示例中,如何使用 PrefixStyle 和 ProtoBuf-net 获取长度数?
PrefixStyle.Base128 和 PrefixStyle.Fixed32 有什么区别?
谢谢!
PerfTest clone;
using (MemoryStream ms = new MemoryStream())
{
Serializer.SerializeWithLengthPrefix(ms, obj,PrefixStyle.Base128);
byte[] raw = ms.ToArray();
ms.Position = 0;
clone = Serializer.DeserializeWithLengthPrefix<PerfTest>(ms,PrefixStyle.Base128);
}
Run Code Online (Sandbox Code Playgroud)
编辑:使用字节数组下方的代码长度为 22。为什么 TryReadLengthPrefix 返回 21?肯定是应该返回22?
PerfTest clone;
using (MemoryStream ms = new MemoryStream())
{
Serializer.SerializeWithLengthPrefix(ms, obj,PrefixStyle.Base128);
byte[] raw = ms.ToArray();
ms.Position = 0;
int bArrayLen = ms.ToArray().Length; //returns 22
int len;// set to 21. Why not 22?
Serializer.TryReadLengthPrefix(ms, PrefixStyle.Base128,out len);
clone = Serializer.DeserializeWithLengthPrefix<PerfTest>(ms,PrefixStyle.Fixed32);
}
Run Code Online (Sandbox Code Playgroud)