我目前正在使用两种消息协议,一种是google proto,另一种是c结构。将Google协议缓冲区消息(MessageLite)转换为字节数组的最佳解决方案是什么?
例如,我想要转换以下Google Proto消息:
message GoogleRequest
{
optional int32 request = 1 [default = 0];
}
Run Code Online (Sandbox Code Playgroud)
至:
struct Request
{
int request;
};
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下方法,但是它不起作用:
GoogleRequest reqMsg;
reqMsg.set_request(1234);
int size = reqMsg.ByteSize();
Request* reqStruct = new Request;
reqMsg.SerializeToArray((void*)reqStruct , size);
Run Code Online (Sandbox Code Playgroud)
任何建议,或者是最好的方法:
reqStruct->request = reqMsg.request();
Run Code Online (Sandbox Code Playgroud)
我有很多消息类型,并且找到一种通用的方法非常好。