我需要在我的 c++ 函数中使用原始字节形式的协议缓冲区输入。https://developers.google.com/protocol-buffers/docs/cpptutorial中的教程仅提到对文件进行序列化和解析数据。这不是我的用例。
如何从原始字节解码协议缓冲区?我只有一个指向数据的指针和要使用的大小。最好我不希望数据被复制。
我需要在我的 c++ 函数中使用原始字节形式的协议缓冲区输入。https://developers.google.com/protocol-buffers/docs/cpptutorial中的教程仅提到对文件进行序列化和解析数据。这不是我的用例。
如何从原始字节解码协议缓冲区?我只有一个指向数据的指针和要使用的大小。最好我不希望数据被复制。
Google protobufs 有一种bytes你可以使用的类型。如果在您的情况下您需要将其转换为另一种标量类型,则必须在将其发送到 protobuffs 之前执行此操作,因为库会在幕后执行一些操作以确保它在目的地处于正确的 bight 顺序。
如果我这样做,现在似乎可以工作:
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 教程中一样。