Does someone have a Serialize sample for protobuf-net?  I'm using VS

When I try Encoding.ASCII.GetBytes() and Encoding.ASCII.GetString(), I
get an exception "invalid wire type - 7". If I
Convert.FromBase64String, serialize/deserialize works but the message
is rejected by the server which is running on Linux and is expecting a
valid protobuf as a string.

        private string Serialize(OrderProto proto)
            using (MemoryStream stream = new MemoryStream())
                Serializer.Serialize<OrderProto>(stream, proto);
                byte[] data = new byte[stream.Length];
                stream.Seek(0, SeekOrigin.Begin);
                stream.Read(data, 0, data.Length);
                return Convert.ToBase64String(data);

        private OrderProto TestDeserialize(string str)
            byte[] data = Convert.FromBase64String(str);
            MemoryStream stream = new MemoryStream(data);
            OrderProto proto = Serializer.Deserialize<OrderProto>
            return proto;

OrderProto proto = p.GetOrderProto(order.OrderID);
string protoStr = this.Serialize(proto); // but as Base64, this
protobuf is rejected by the server
OrderProto test = TestDeserialize(protoStr);

Another thing I noticed is that if I re-serialize a protobuf I
received from the server, the resulting byte array is roughly 10 bytes
shorter than when came in. But the deserialized class instance looks

                    OrderProto order =
Serializer.Deserialize<OrderProto>(new MemoryStream(contentBytes));
                    MemoryStream ms = new MemoryStream();
                    Serializer.Serialize<OrderProto>(ms, order);
                    ms.Seek(0, SeekOrigin.Begin);
                    byte[] buffer = ms.ToArray();
                    OrderProto test =

You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to
To unsubscribe from this group, send email to
For more options, visit this group at

Reply via email to