热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C++协议缓冲区,发送整数数组

如何解决《C++协议缓冲区,发送整数数组》经验,应该怎么弄,您有好建议吗?

我有一个嵌入式C++项目,我从硬件设备读取一系列int32,然后将它们作为大数据结构的一部分打包到int数组中,然后通过TCP/IP发送到远程系统.因此,我使用了一个简单的数据结构,并定义了一堆东西,现在我想将其转换为使用Protocol Buffers.所以,我正在考虑使用"重复的int32数据"作为我的原型buff的元素.但是我想避免使用这样的循环:

int hardware_data[1000]; // An array that holds the data read from the hardware
for(int i=0; i

我更倾向于使用一种有效的方法,例如使proto buff只指向现有的hardware_data []数组(零复制方法),或者将hardware_data中的memcpy用于proto.data.

我理解如何设置memcpy(),但是proto buff如何知道proto.data"数组"中有多少元素?我还可以使用proto.data_size()来获取元素的数量吗?有没有一种有效的方法将数据从我的硬件读取移动到proto buff进行发送?有一个更好的方法吗?

Kerrik,我不知道零拷贝API.这是我的原型定义:

message hardware_data 
{
optional    Lob                     lob             = 1;
optional    int32                   taskSeqNum      = 2;
optional    int32                   secOndsOfDay= 3;
optional    float                   IQOutRateKhz    = 4;
optional    float                   IQBwKhz         = 5;
optional    int32                   tStart          = 6;
optional    int32                   tOffset         = 7;
optional    float                   collectiOnTime= 8;
optional    int32                   numSamples      = 9;
optional    int32                   chunk           = 10;
optional    int32                   dimSize         = 11;
repeated    int32                   data            = 12 [packed=true];
}

我不确定零拷贝如何在这个原型buff定义中发挥作用.


推荐阅读
author-avatar
菜鸟一号
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有