【问题标题】:Google Protocol Buffers - serialize to byte arrayGoogle Protocol Buffers - 序列化为字节数组
【发布时间】:2017-06-04 14:37:42
【问题描述】:

我正在学习使用 Google Protocol Buffers for C# 的教程。我没有看到将对象转换为字节数组的示例-有人知道该怎么做吗?我已经使用 protoc 编译器自动生成了一个 FilePath 类,并且到目前为止:

FilePath fp = new FilePath
{
    Path = "TestPath",
    RealTimeMultiple = 5.0f
};

所以,我需要知道如何在不使用 BinaryFormatter 的情况下正确序列化 fp 对象。

【问题讨论】:

    标签: c# serialization memorystream protocol-buffers


    【解决方案1】:

    假设您使用的是 Google.Protobuf nuget 包,您可以使用:

    using Google.Protobuf;
    
    ...
    
    byte[] bytes = fp.ToByteArray();
    

    您需要 Google.Protobufusing 指令才能使 IMessage.ToByteArray 扩展方法可用 - 这可能是您之前缺少的。

    【讨论】:

    • 谢谢 - 没想到这么简单。您是否有示例或知道我将如何使用 WriteTo 方法发送字节数组?我在问题中附加了更多细节。
    • @Roka545:“发送字节数组”是什么意思?如果要将消息写入流,请改用WriteTo(stream)。您的额外问题并没有真正帮助-因此您已经知道如何写入流(尽管通常您不会写入 MemoryStream ,除非您对流执行其他操作)。所以您知道如何写入流或将其转换为字节数组......那么您还需要知道什么?你还没有真正解释你想要达到的目标......
    • 我正在使用 Protobuf 和 nanomsg 在节点之间发送/接收数据。基本上,我有两个能够在彼此之间发送/接收消息的节点。一个节点将创建并序列化 fp 对象并将其发送给另一个节点。然后接收节点将接收该数据,对其进行反序列化,并从中提取任何信息。
    • @Roka545:就您在这里缺少的东西而言,这并没有真正帮助我-从未使用过 nanomsg,我不知道它需要什么。如果您知道如何写入流,并且知道如何创建字节数组,您还需要什么? (鉴于我已经回答了你原来的问题,我建议你回滚你的编辑,然后问一个单独的问题,这是 nanomsg+protobuf 特定的,如果你仍然有疑虑。请专注于明确你的要求,避免像这样来回走动。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 2016-04-26
    • 2011-09-15
    • 2011-05-06
    相关资源
    最近更新 更多