论坛元老
 
- 积分
- 4163
- 金钱
- 4163
- 注册时间
- 2017-10-24
- 在线时间
- 251 小时
|
发表于 2018-8-10 09:56:16
|
显示全部楼层
楼主的意思应该是,当数组的长度不知道的时候,如何传递这个数组吧。
一种参考的方案就是设计一个简单的协议,对于基本的u8型数组来说:一字节包头,一字节长度(限制了这个数组的最大长度为256)或者两字节长度(限制这个数组的最大长度为65536),然后后面跟变长的数组数据,最后跟一个校验和来判断是否 传输正确。如果是其他数据类型的数组,无论是int型long型float\double型,甚至是结构体类型,可以使用强制类型转换,例如已知一个float型数据占4字节,那么在发送端可以这样拆分:
[mw_shl_code=c,true]float arr[10];
u8 *sendPointer=(u8*)arr;
//此时sendPointer就可以看作是指向一个长度40的u8数组首地址的指针了[/mw_shl_code]
然后接收端先接收到一个u8数组recv里面,然后相反的操作即可:
[mw_shl_code=c,true]u8 recv[40];
...
//接收完成了,开始转换
float *arr=(float*)recv;
//然后就可以以float数组的方式,通过arr访问这个数组了[/mw_shl_code] |
|