Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
238 views
in Technique[技术] by (71.8m points)

c++ - the return value is false invoking ParseFromArray when using proto3. But true when using proto2

enum MsgType {
  MT_INVALID              = 0;
  MT_HEADER               = 1; 
}
message BaseMsg {
  MsgType type        = 1; 
  uint32 len         = 2; 
  string data        = 3; 
  uint32 crc32       = 4; 
  uint32 coin_type   = 5; 
}

sharebase::BaseMsg msg;
if (!msg.ParseFromArray(buf, len)) {
  LOG(ERROR) << "parse BaseMsg from base message failed! ";
  return;
}

the client send the BaseMsg using proto3. If the server uses proto2, I invoke ParseFromArray and get the right result. But if the server uses proto3, the return value is false when invoking ParseFromArray.

I do not know why and anyone can help me?

By the way, the client is implemented by go. And the server is c++.

question from:https://stackoverflow.com/questions/65560296/the-return-value-is-false-invoking-parsefromarray-when-using-proto3-but-true-wh

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...