我的(DSP)应用程序以恒定速率生成数据。速率取决于用户选择的配置。我想知道每秒生成多少字节。数据结构包含重复(打包)浮点字段。字段的长度是常量,但可以由用户更改。
是否有协议缓冲区函数可以在序列化之前计算消息大小?
答案 0 :(得分:16)
如果您已构建消息对象,则可以在消息上调用ByteSize(),该消息将返回序列化消息将占用的字节数。有一个指向ByteSize的C ++文档的链接。
答案 1 :(得分:7)
提前知道是不可能的,因为protobuf将给出的结构打包成尽可能少的字节 - 例如,int x = 1;
不会使用四个字节 - 所以图书馆必须走完整个图表知道输出大小。
我相信你可以通过对你自己设计的protobuf兼容流进行序列化操作来找到它,只计算它给出的字节数。这可能代价高昂,但没有比图书馆完成这项工作更昂贵的费用。
答案 2 :(得分:1)
您可以在不发送邮件的情况下填写邮件,然后致电CalculateSize()