题
我正在使用音频数据。我想反向播放示例文件。数据被存储为未签名的INT,包装好且紧密。有办法打电话吗 memcpy
这将以相反的顺序复制。即,如果我存储在数组中的1,2,3,4,我可以打电话给 memcpy
和 神奇 扭转它们,所以我得到4,3,2,1。
解决方案
这可以复制 int
相反:
void reverse_intcpy(int *restrict dst, const int *restrict src, size_t n)
{
size_t i;
for (i=0; i < n; ++i)
dst[n-1-i] = src[i];
}
就像 memcpy()
, ,由 dst
和 src
不能重叠。
如果您想倒置就地:
void reverse_ints(int *data, size_t n)
{
size_t i;
for (i=0; i < n/2; ++i) {
int tmp = data[i];
data[i] = data[n - 1 - i];
data[n - 1 - i] = tmp;
}
}
以上两个功能都是便携式的。您可能可以通过使用特定于硬件的代码使它们更快。
(我尚未测试代码的正确性。)
其他提示
不,memcpy不会向后做。如果您在C中工作,请编写一个函数来执行此操作。如果您真的在C ++工作,请使用std :: reververs或std :: reverse_copy。
不隶属于 StackOverflow