首页 > 解决方案 > 如何将 512 字节数组拆分为更小的部分?

问题描述

我需要拆分我的 512 字节数组,我有一个看起来像的函数

uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)

我有一个名为 nandtest 的数组,下面两行代码工作正常。

int8_t nandtest[520] = {0};
CDC_Transmit_FS((uint8_t*)nandtest,512);

但是我需要将字节数组拆分为两个 256 字节数组并发送它。当我尝试这样做时:

CDC_Transmit_FS((uint8_t*)nandtest,256);
CDC_Transmit_FS((uint8_t*)nandtest[256],256);

由于第二行,编译器给了我错误:

警告:从 samller 整数类型“int8_t”(又名有符号字符)转换为 uint8_t*(又名无符号字符*)

如何表示我想要从数组的 256 字节位置开始的第二行传输函数?或者创建两个不同的 256 字节数组是这里唯一的选择?

标签: carrays

解决方案


第一条语句是正确的,但对于第二条语句,您需要使用运算符的地址,因为您的 CDC_Transmit_FS 函数需要缓冲区的地址,但您在位置 nandtest[256] 传递值。

CDC_Transmit_FS((uint8_t*)nandtest,256);

这与:

CDC_Transmit_FS((uint8_t*)&nandtest[0],256);

要传递第二个 256 字节缓冲区,请使用以下方法传递 257 字节的地址:

CDC_Transmit_FS((uint8_t*)&nandtest[256],256);

推荐阅读