gpt4 book ai didi

c# - 使用 Google Protocol Buffer 和 Protobuf-C# 将双重属性从 C++ 传输到 C# 时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:26 25 4
gpt4 key购买 nike

我正在尝试通过消息传递系统 QPID 将对象作为序列化字符串从 C++ 发送到 C#。我目前有一个这样的 Google 原型(prototype)文件:

package Serializable;

message Order_ser
{
optional int32 openord = 1 [default = 0];
optional int32 oldord = 2 [default = 0];
optional double price = 3 [default = 0];
}

我在通过 C++ 传输对象时在 C# 结束时遇到错误

Protocol message tag had invalid wire type.

只有当我将一个值赋给 double 类型(例如价格)时才会发生这种情况。

最佳答案

尽管名称如此,但我不相信 SerializeAsString 真的 将其转换为文本 - 因此您不应在 C# 端将其视为文本。我强烈怀疑是将二进制数据解释为 UTF-8 编码文本出了问题。

我对 QPID 一无所知,但假设您可以通过这种方式传输任意 binary 消息,那么您应该这样做。如果您不能通过 QPID 传输任意二进制消息,那么 Protocol Buffers 可能不是适合您的解决方案 - 它们实际上被设计为一种高效的二进制表示形式。您当然可以对数据进行 base64 编码,但您可能会发现有更合适的方法。

关于c# - 使用 Google Protocol Buffer 和 Protobuf-C# 将双重属性从 C++ 传输到 C# 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17584595/

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