精确的对象到字节转换,类似于 C# 中的 memcpy

本文关键字:类似于 中的 memcpy 转换 对象 到字节 | 更新日期: 2023-09-27 18:33:19

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

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

==

|

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

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

==

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

精确的对象到字节转换,类似于 C# 中的 memcpy

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