C# protobuf net(反)Serialized with LengthPrefix的原始proto表示
首先,这不是一个重复的其他问题,所以请仔细阅读我的问题,然后再标记它 我需要写出与使用Serializer.NonGeneric(反)Serialize读写的C#(反)序列化消息匹配的原始原始原始文件。我目前使用PrefixStyle.Base128,并希望继续这样做(除非使用PrefixStyle.Fixed32是唯一的出路) 例如,给定一条消息:C# protobuf net(反)Serialized with LengthPrefix的原始proto表示,c#,protocol-buffers,protobuf-net,C#,Protocol Buffers,Protobuf Net,首先,这不是一个重复的其他问题,所以请仔细阅读我的问题,然后再标记它 我需要写出与使用Serializer.NonGeneric(反)Serialize读写的C#(反)序列化消息匹配的原始原始原始文件。我目前使用PrefixStyle.Base128,并希望继续这样做(除非使用PrefixStyle.Fixed32是唯一的出路) 例如,给定一条消息: message KeyValuePair { optional string Key = 1; optional string Val
message KeyValuePair {
optional string Key = 1;
optional string Value = 2 [default = ""];
}
根据Google groups thread,@marc gravell说,“…SerializeWithLengthPrefix方法,默认情况下,旨在以一种有效protobuf流的方式表示数据-特别是,它只是父对象或列表的一个成员…”
当使用
Serializer.NonGeneric.SerializeWithLengthPrefix(<stream>, new KeyValuePair { Name = "foo", Value = "Bar" }, PrefixStyle.Base128, <unique_message_id>)
Serializer.NonGeneric.SerializeWithLengthPrefix(,新的KeyValuePair{Name=“foo”,Value=“Bar”},PrefixStyle.Base128,)
?
提前感谢您的帮助 消息dummydesnotexist{
message DummyDoesNotExist {
optional KeyValuePair Value = <unique_message_id>;
}
可选的KeyValuePair值=;
}
在电线上,这是:
varint: [wire-type: length-prefixed, field: <unique_message_id>] // typically 1 byte
varint: [length] // typically 1 or 2 bytes
[length bytes of KeyValuePair data]
varint:[导线类型:长度前缀,字段:://通常为1字节
变量:[长度]//通常为1或2个字节
[KeyValuePair数据的长度字节]
消息DummyDoesNotExist{
可选的KeyValuePair值=;
}
在电线上,这是:
varint: [wire-type: length-prefixed, field: <unique_message_id>] // typically 1 byte
varint: [length] // typically 1 or 2 bytes
[length bytes of KeyValuePair data]
varint:[导线类型:长度前缀,字段:://通常为1字节
变量:[长度]//通常为1或2个字节
[KeyValuePair数据的长度字节]
完美。这正是我需要的。谢谢完美的这正是我需要的。谢谢