gpt4 book ai didi

从一个内存复制到另一个内存,跳过 C 中的常量字节

转载 作者:行者123 更新时间:2023-11-30 20:31:59 25 4
gpt4 key购买 nike

我正在研究嵌入式系统应用。我想从源复制到目标,跳过恒定数量的字节。例如:source[6] = {0,1,2,3,4,5},我希望目标为 {0,2,4} 跳过一个字节。不幸的是 memcpy 无法满足我的要求。由于我有大量数据要处理并且使用循环会经历时间开销,因此如何在不使用循环的情况下在“C”中实现此目的。

我当前的实现是这样的,复制 1500 字节需要 5-6 毫秒:

unsigned int len_actual = 1500; 
/* Fill in the SPI DMA buffer. */
while (len_actual-- != 0)
{
*(tgt_handle->spi_tx_buff ++) = ((*write_irp->buffer ++)) | (2 << 16) | DSPI_PUSHR_CONT;
}

最佳答案

你可以编写一个“ cherry-pick 器”函数

void * memcpk(void * destination, const void * source, 
size_t num, size_t size
int (*test)(const void * item));

最多复制 num 个“对象”,每个对象的大小为 size目的地。仅复制满足测试的对象。然后用

int oddp(const void * intptr) { return (*((int *)intptr))%2; }
int evenp(const void * intptr) { return !oddp(intptr); }

你可以这样做

 int destination[6];
memcpk(destination, source, 6, sizeof(int), evenp);

.

关于从一个内存复制到另一个内存,跳过 C 中的常量字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49116227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com