我想通过网络发送序列化整数时减小邮件大小。 在下面的部分中,buff.Length是256 - 很高效的开销! 如何将其减少到最小(4个字节+最小开销)?
int val = RollDice(6);
// Should 'memoryStream' be allocated each time!
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(memoryStream, val);
byte[] buff = memoryStream.GetBuffer();
提前致谢, --- KostaZ
答案 0 :(得分:1)
看一下protobuf.net ...它是一个非常好的序列化lib(你可以在NuGet上获得它)。另外,理想情况下,您应该在内存流中使用“using”语句。
要回复以下评论,那么最有效的方法取决于您的使用案例。如果您确切地知道需要序列化的内容并且不需要通用序列化程序,那么您可以编写自己的二进制格式化程序,它可能根本没有开销(这里有一些细节custom formatters)。
这个link比较了BinaryFormatter和protobuf.net供您参考。