我有一个通过 TCP/IP 方法进行通信的应用程序,并且需要将一些数据序列化到设备上。
在应用程序中,我想序列化一个混合类型的对象数组,其中包括字符串、双精度数组和一些整数..等。例如,我想序列化 Data 其中:
数据 = [大小,mainmsg];其中 size 是一个 int16,而 mainmsg 是一个字符串。
我查看了以下参考 http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+C+Sharp
在我看来,如果我的对象数组中有字符串,BoxingPacker 在解压时会抛出异常。
我想问一下,如果我有一个混合类型的对象数组 [5,"D1"],那么使用 msgpack(in c#) 进行序列化的最佳方法是什么?(这个包是设计好的,不能改其他序列化方式)
现在,我使用 BoxingPacker 来打包我的整数,并使用 ObjectPacker 来打包我的字符串,例如:
size = 1;
msg = "D1"
BoxingPacker intpacker = new BoxingPacker();
packedsize = intpacker.Pack(size);
ObjectPacker packer = new ObjectPacker();
packedmsg = packer.Pack<String>(msg);
然后我使用 Buffer.BlockCopy 将二进制数据(packedsize + packedmsg)组合在一起。
我正在寻找是否有一种简单的方法可以做到这一点?也许我遗漏了一些东西,但是除了上面粘贴的链接之外,我找不到任何文档。任何指导表示赞赏。