문제
오디오 데이터로 작업하고 있습니다. 샘플 파일을 반대로 재생하고 싶습니다. 데이터는 서명되지 않은 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 :: Reverse 또는 std :: reverse_copy를 사용하십시오.
제휴하지 않습니다 StackOverflow