0

我有一个通过 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)组合在一起。

我正在寻找是否有一种简单的方法可以做到这一点?也许我遗漏了一些东西,但是除了上面粘贴的链接之外,我找不到任何文档。任何指导表示赞赏。

4

1 回答 1

1

你只需要序列化一个对象数组

size = 1;
msg = "D1"

object[] objs = new object[] { size, msg };

ObjectPacker packer = new ObjectPacker();
packedmsg = packer.Pack<object[]>(objs);
于 2015-08-22T09:19:13.597 回答