c - 如何将数组拆分为特定大小

标签 c protocols wireless tinyos nesc

我即将在 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字节的 block 意味着会有ceil(2000/110)包。但是,您的数据包可能包含 header 或校验和或两者(前缀和后缀数据)。

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);

注意 ipacket_count * 110 开始,而 j0 移动到 109.

关于c - 如何将数组拆分为特定大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30557130/

相关文章:

clojure - Clojure 的 defrecord 方法名称解析如何工作?

java - 无法从 WifiP2pDeviceList 获取设备

c++ - 如何使用 NCurses 阻止 C++ 中的某些键

c - strptime() 在 C 中产生垃圾时间

c - USB 设备注册 - 仅在停止请求时记录

networking - 如何将无线网络适配器连接到VMWare工作站?

android - 如何从 wpa_supplicant 守护进程中获取 wpa2-psk key ?

c++ - 同一类型的多个声明会影响编译时间吗?

sql-server - 最快的 SQL Server 协议(protocol)?

ios - Swift 错误说“实例成员 * 不能在类型上使用”