0

一段时间以来,我一直在寻找解决方案,但我发现的东西都不是很匹配。C# 有一个内置的序列化库很棒,但这并不是我想要的。我需要以可以序列化它们的方式序列化对象,将标头数据附加到数据包中,即。ID 号、时间戳、对象类型等,然后能够将其发送出去,而无需记住我将其发送到的平台。换句话说,我应该能够在 C++ 或 Java 中解包我的数据包,而无需比我要转换的对象类型和标头数据的顺序更多的知识。C# 中的二进制格式化程序会产生一个问题,因为它被设计为在另一端使用相同的库进行反序列化。它还会创建我不想处理的臃肿数据包。

|========|========|=========|===|==============|

| 数据包ID | 数据类型 | 时间戳 | 等| 序列化对象 |

|========|========|=========|===|==============|

如果我可以访问 memcpy 中的某些东西来实现这一点,那就太好了,因为只要对象的数据类型顺序被反序列化为匹配项(是的,假设其他语言具有相同的数据类型字节大小),在新平台上从服务器抓取数据很容易(比如我想抓取 Android (Java) 或 iPhone (obj.C) 的数据),几乎没有麻烦

4

1 回答 1

3

我使用谷歌的协议缓冲区效果很好。它体积小、速度快、跨平台、向后兼容并序列化为二进制格式。它不支持您正在寻找的自定义标头信息,但如果您可以构建自己的数据包,您可以将自定义标头添加到您认为合适的二进制流上。Protobuf 可以编译成C#、iOS、Java 和 C++。

于 2012-05-04T01:44:10.013 回答