gpt4 book ai didi

c# - 反序列化 Protocol Buffer c++中的字符串数组

转载 作者:太空狗 更新时间:2023-10-29 22:55:38 25 4
gpt4 key购买 nike

我正在使用 rabbitmq 将包含 2 个字符串数组的对象从 C# 程序发送到 C++ 程序。 C# 程序中的类如下所示:

namespace LPRRabbitMq.Class
{
[ProtoContract(SkipConstructor = true)]
public class BlackAndWhiteList
{
[ProtoMember(1)]
public string[] BlackList { get; set; }

[ProtoMember(2)]
public string[] WhiteList { get; set; }
}
}

C#对象序列化代码:

 byte[] data;

using (var ms = new MemoryStream())
{
Serializer.Serialize(ms, blackAndWhite);
data = ms.ToArray();
}

现在我想在C++程序中获取数据。我创建了一个原型(prototype)文件:

syntax = "proto2";
package Protobuf;

message BlackAndWhiteList {
optional bytes BlackList = 1;
optional bytes WhiteList = 2;
}

我在 C++ 程序上收到消息,但我如何反序列化数据以及如何最终将每个字符串数组保存在一个单独的数组中?

最佳答案

最好的办法是请图书馆帮助您:

var proto = Serializer.GetProto<BlackAndWhiteList>(ProtoSyntax.Proto2);

这给你:

syntax = "proto2";
package LPRRabbitMq.Class;

message BlackAndWhiteList {
repeated string BlackList = 1;
repeated string WhiteList = 2;
}

它告诉您如何最好地表示它。通过在此处使用 repeated,您应该能够正确识别 C++ 代码中的各个元素。通过使用 string,它应该成为适合 C++ 的类型。

关于c# - 反序列化 Protocol Buffer c++中的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50794595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com