C memcpy 反向
我正在处理音频数据。我想反向播放示例文件。数据存储为无符号整数,并且包装得很好且紧密。有没有一种方法可以调用以相反顺序复制的memcpy。即,如果我将 1,2,3,4 存储在数组中,我可以调用 memcpy 并神奇地反转它们,以便得到 4,3,2,1。
I am working with audio data. I'd like to play the sample file in reverse. The data is stored as unsigned ints and packed nice and tight. Is there a way to call memcpy
that will copy in reverse order. i.e. if I had 1,2,3,4 stored in an array, could I call memcpy
and magically reverse them so I get 4,3,2,1.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不,memcpy 不会向后执行此操作。如果您使用 C 语言工作,请编写一个函数来完成它。如果您确实使用 C++ 工作,请使用 std::reverse 或 std::reverse_copy。
No, memcpy won't do that backwards. If you're working in C, write a function to do it. If you're really working in C++ use std::reverse or std::reverse_copy.
这适用于反向复制
int
:就像
memcpy()
一样,dst
和src
指向的区域code> 不得重叠。如果你想就地反转:
上面的两个函数都是可移植的。您可以通过使用特定于硬件的代码来使它们更快。
(我还没有测试代码的正确性。)
This works for copying
int
s in reverse:Just like
memcpy()
, the regions pointed-to bydst
andsrc
must not overlap.If you want to reverse in-place:
Both the functions above are portable. You might be able to make them faster by using hardware-specific code.
(I haven't tested the code for correctness.)