-1

我需要在我的 c++ 函数中使用原始字节形式的协议缓冲区输入。https://developers.google.com/protocol-buffers/docs/cpptutorial中的教程仅提到对文件进行序列化和解析数据。这不是我的用例。

如何从原始字节解码协议缓冲区?我只有一个指向数据的指针和要使用的大小。最好我不希望数据被复制。

4

2 回答 2

-1

Google protobufs 有一种bytes你可以使用的类型。如果在您的情况下您需要将其转换为另一种标量类型,则必须在将其发送到 protobuffs 之前执行此操作,因为库会在幕后执行一些操作以确保它在目的地处于正确的 bight 顺序。

于 2018-10-13T15:19:59.687 回答
-1

如果我这样做,现在似乎可以工作:

    uint8* buffer = (uint8*) theBytesPnt;

    CodedInputStream* codedStream = new CodedInputStream(buffer, nBytes );
    EquityPredParams* message = new myGeneratedProtoClass();

    bool_success = message->ParseFromCodedStream(codedStream);

    magicallyObtainedNum = message->people(1).id();

people 类在 .proto 文件中定义,就像在 google 教程中一样。

于 2018-10-14T08:24:46.997 回答