在调用protobuf的ParseFromString(str)方法时,默认情况下,如果str的长度>64MB,会返回失败。
这里给出了解释,主要是出于安全因素的考虑。
可以通过SetTotalBytesLimit方法去除这个限制:
// ::google::protobuf::Message req;
::google::protobuf::io::ArrayInputStream input(str.data(), str.size());
::google::protobuf::io::CodedInputStream decoder(&input);
decoder.SetTotalBytesLimit(1024*1024*1024, 64*1024*1024);
bool success = req.ParseFromCodedStream(&decoder) && decoder.ConsumedEntireMessage();
本文介绍了在使用 Protobuf 解析超过 64MB 的字符串时可能会遇到的问题,并提供了解决方案,即通过 SetTotalBytesLimit 方法来提高解析限制。
8302

被折叠的 条评论
为什么被折叠?



