首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中将数组指针中的元素设置为protobuf

在C++中将数组指针中的元素设置为protobuf
EN

Stack Overflow用户
提问于 2022-08-03 22:43:13
回答 1查看 150关注 0票数 0

我有一个指向名为array的数组的指针,该数组被定义为uint16_t *array。我有另一个名为size的变量,它显示有多少个元素。我在protobuf消息中有一个字段定义为:

代码语言:javascript
运行
复制
required bytes array = 1;

如何使用生成的方法protoMessage.set_array将数组转换为字段?

编辑:

我意识到我可以做protoMessage.set_array(array, sizeof(uint16_t) * size);把数据放进去,仍然不确定如何正确地设置它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-04 03:47:46

因为Protobuf的bytes类型是std::string,所以需要将uint16_t数组序列化为字符串,并调用set_array

代码语言:javascript
运行
复制
protoMessage.set_array(array, sizeof(uint16_t) * size);

但是,由于大大小小的endian问题,您的序列化可能不是可移植的。

在您的示例中,为什么不将proto消息字段定义为repeated?这样您就可以将您的uint16_t数组放到字段中,而protobuf将为您完成序列化工作。

代码语言:javascript
运行
复制
repeated uint32 array = 1;
代码语言:javascript
运行
复制
protoMessage.mutable_array()->Add(array, array + size);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73228567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档