从C ++中的原始字节解码协议缓冲区

时间:2018-10-13 15:00:24

标签: c++ protocol-buffers

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

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

2 个答案:

答案 0 :(得分:-1)

您可以使用Google protobufs的类型bytes。如果您的情况是需要将其转换为其他标量类型,则必须先执行此操作,然后再将其发送到probuff,因为该库在后台进行了一些操作以确保它位于正确的范围内在目的地订购。

答案 1 :(得分:-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();

如在Google教程中那样,在.proto文件中定义了人员类。