2012-12-12 10 views
0

저는 현재 일부 .wav 파일로 스테 가노 그래피를 사용하고 있습니다.배열을 수정하는 방법은 무엇입니까?

내가하고 싶은 것은 사운드 파일을 배열로 연 다음 그 배열을 수정하는 프로그램을 작성하는 것입니다.하지만 그것이 내가 붙어있는 곳입니다.

현재 내가 가진 :

#include <stdio.h> 
#include "scc110wav.h" 

int main() 
{ 
    unsigned char *soundData = LoadWavAudioFile("3stepoct.wav"); 

    int byte; 

    for (byte = 0; byte <= 5554944; byte++){ 
     printf("%d\n", soundData[byte]); 
    } 
} 

내가 현재 할 수있는 모든 배열을 인쇄하지만, 배열의 값을 변경 할 방법으로. 마지막으로 배열을 인쇄 할 필요가 없다는 것을 알았습니다. 특히 커다란 문제가 있습니다.하지만 파일에 대한 느낌을 얻고 싶기 때문에 배열 값을 청취없이 ASCII 값으로 변경할 수 있습니다. 사운드의 변화를 많이 감지합니다.

+2

글쎄,'soundData [index] = 42;'충분하지 않나요? –

+0

"int byte;"를 좋아합니다. 그것은 "긴 문자열"과 같습니다. –

+0

혼란 스럽습니다. 정확히 무엇이 문제입니까? 거기에'soundData [byte] = 50;'또는 unsigned char 값을 써서 쓸 수없는 이유가 있습니까? – Mike

답변

3

soundDataconst이 아니므로 [] 연산자를 사용하여 스트림의 바이트에 액세스하고이 데이터로 원하는 모든 작업을 수행 할 수 있습니다.

1

내 이해에 따라 wav 파일을 재생할 수 있도록 변경해야하는 부분이 혼란 스럽습니다. 이 문제가 경우 Click here to learn Wave file format

링크

아래에서 모든 웨이브 파일 형식에 대한 배울 수있는 당신이 손상 등 청크 크기에 관한 기타 세부 사항을 남겨 데이터 부분에서 변경할 수 있습니다. 당신이 %d 지정자를 사용하여 for 루프에서 soundData[byte]를 인쇄 할 때

0

, 당신은 soundData[byte] 낭포에 저장된 문자의 ASCII 값을 인쇄, 당신은 쉽게 액세스하고 시간의 어느 시점에 soundData[byte]에 저장된 데이터를 수정할 수 있습니다 그냥 정상 배열과 마찬가지로. 그냥 그저 unsigned char * 게다가 아무 것도 배열에서 아무것도 수정에서 당신을 막을 수 있습니다.

당신은 for 루프에 사용 5554944이의 int 최대 저장 값 제한을 초과하기 때문에 long longint에서 byte의 데이터 유형을 변경하는 것을 고려할 수 있습니다. 그래서, 기본적으로 당신은 계속 굴러 갈 것입니다.

오디오 파일의 데이터에 액세스하는 방법을 이해하면 입력 스트림에서 구현할 좋은 스테 가노 지의 장점을 실제로 살펴야합니다. 가장 간단한 알고리즘은 LSB 기반 알고리즘입니다.

관련 문제