【发布时间】:2023-03-06 18:27:01
【问题描述】:
我使用“protobuf-net”序列化一个结构,但它返回一个空数组。
public static byte[] PacketToArray(Packet packet)
{
IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
Serializer.Serialize(stream, packet);
byte[] packetArray = stream.GetBuffer();
stream.Close();
return packetArray;
}
packetArray[] 在结尾 "{byte[0]}" 但里面应该有一些数据。 “包”的数据是:
[ProtoContract]
public struct Packet
{
[ProtoMember(1)]
public int opcode;
[ProtoMember(2)]
public string message;
}
在测试中,操作码的值为 0,消息为空。 问题出在哪里?
【问题讨论】:
-
我建议您致电
ToByteArray()而不是GetBuffer()- 它不会解决此问题,但它会为您提供一个包含适量数据的字节数组,当您完成其余工作时。
标签: c# protobuf-net