如何将数组拆分为特定大小
How to split up an array to specific size
我即将在 telosb motes 中实现一些算法。我需要做的是,获取一个文件并将其拆分为更小的对象,然后将对象拆分为更小的对象,称为页面,如下图所示。
完成后,页面将无线传输到其他节点。
一次一个,称为数据包。
我有一个 2000 字节的数组,我想如图所示溢出,页面的要求是每个数据包应小于或等于 110 字节。
nx_uint16_t file[1000];
int j, A;
for ( j = 0;j<1000;j++)
{
int ra = (rand() +1) % 10;
}
A = sizeof(file);
printf("\n Array size: %d Bytes", A );
如有任何帮助,我们将不胜感激。
如果您为 Object、Page 和 Packet 定义了三种大小,则使用上述大小的三个数组并连续复制元素。
因为你有2000字节,将它分成110字节的chunk意味着会有ceil(2000/110)包。但是,您的数据包可能包含 headers 或校验和或两者(前缀和后缀数据)。
byte array[2000];
byte packet[110];
unsigned packet_count = 0;
for(int i = packet_count * 110, j = 0; j < 110; ++j, ++i)
packet[j] = array[i] ;
++packet_count ;
forward(packet);
注意 i
从 packet_count * 110
开始,而 j
从 0
移动到 109
。
我即将在 telosb motes 中实现一些算法。我需要做的是,获取一个文件并将其拆分为更小的对象,然后将对象拆分为更小的对象,称为页面,如下图所示。
完成后,页面将无线传输到其他节点。 一次一个,称为数据包。
我有一个 2000 字节的数组,我想如图所示溢出,页面的要求是每个数据包应小于或等于 110 字节。
nx_uint16_t file[1000];
int j, A;
for ( j = 0;j<1000;j++)
{
int ra = (rand() +1) % 10;
}
A = sizeof(file);
printf("\n Array size: %d Bytes", A );
如有任何帮助,我们将不胜感激。
如果您为 Object、Page 和 Packet 定义了三种大小,则使用上述大小的三个数组并连续复制元素。
因为你有2000字节,将它分成110字节的chunk意味着会有ceil(2000/110)包。但是,您的数据包可能包含 headers 或校验和或两者(前缀和后缀数据)。
byte array[2000];
byte packet[110];
unsigned packet_count = 0;
for(int i = packet_count * 110, j = 0; j < 110; ++j, ++i)
packet[j] = array[i] ;
++packet_count ;
forward(packet);
注意 i
从 packet_count * 110
开始,而 j
从 0
移动到 109
。