我有 python 服务器,它使用marshal
模块序列化一些字典。并将序列化消息发送到 c# 客户端套接字。我如何在客户端 (c#) 端反序列化此消息。由于执行速度的问题,我无法使用 IronPython。
或者您是否知道在 Python 和 c# 之间序列化/反序列化“消息”的其他方法。
我有 python 服务器,它使用marshal
模块序列化一些字典。并将序列化消息发送到 c# 客户端套接字。我如何在客户端 (c#) 端反序列化此消息。由于执行速度的问题,我无法使用 IronPython。
或者您是否知道在 Python 和 c# 之间序列化/反序列化“消息”的其他方法。
JSON呢?你可以为 C# 编写,甚至可能找到一个 de-Python-pickle-er,但是像 dict 这样的东西很容易用 JSON 表示,这是一个众所周知的、明确定义的标准,用于可靠、快速的序列化/反序列化库几乎存在于所有语言中。当然还有 XML,但 JSON 通常更容易使用。
marshal
通常是特定于 Python 的。如果您想要跨语言支持,那么您应该使用json
。
作为 的替代方案marshal
,“协议缓冲区”在 python 和 c# 中都有很好的支持。Google 提供了 python 实现,并且有多个 c# 实现。协议缓冲区提供出色的版本控制支持、丰富多样的跨平台实现和非常高效的序列化,非常适合快速二进制套接字使用。