我有一个指向名为array
的数组的指针,该数组被定义为uint16_t *array
。我有另一个名为size
的变量,它显示有多少个元素。我在protobuf消息中有一个字段定义为:
required bytes array = 1;
如何使用生成的方法protoMessage.set_array
将数组转换为字段?
编辑:
我意识到我可以做protoMessage.set_array(array, sizeof(uint16_t) * size);
把数据放进去,仍然不确定如何正确地设置它。
发布于 2022-08-03 19:47:46
因为Protobuf的bytes
类型是std::string
,所以需要将uint16_t
数组序列化为字符串,并调用set_array
。
protoMessage.set_array(array, sizeof(uint16_t) * size);
但是,由于大大小小的endian问题,您的序列化可能不是可移植的。
在您的示例中,为什么不将proto消息字段定义为repeated
?这样您就可以将您的uint16_t数组放到字段中,而protobuf将为您完成序列化工作。
repeated uint32 array = 1;
protoMessage.mutable_array()->Add(array, array + size);
https://stackoverflow.com/questions/73228567
复制相似问题