2011-08-14 3 views
2

.wav 파일을 읽는 작은 프로그램을 작성하고 있습니다..wav 파일 읽기 : 리틀 엔디안과 빅 엔디안을 정수로 변환합니다.

는 두 번째 4 바이트처럼 보이는

graphic of .wav file format

는 4 바이트 리틀 엔디안 번호 다음과 같습니다 WAV 사양에 따라 나는보고 있었어요. 나는 이것이 가장 중요하지 않은 바이트가 첫번째 바이트 5라는 것을 의미한다고 생각한다. 그래서 다른 단어들에서 나는 그것들을 왼쪽에서 오른쪽으로 읽는다. 내가 읽어 봤는데 바로는, 나는이처럼 곱해야한다고 생각 :

n=bytearray[5]+(bytearray[6]*256)+(bytearray[7]*256)+(bytearray[8]*16777216) 

그렇게

의 바이트는하지만있는 파일에 대한 소수에 굉장히 많은 수의, 1459618138로 나온다 겨우 90k. 그래서 나는 여기서 어딘가에서 실수를하고 있다고 생각합니다.

다른 숫자의 경우, 리틀 엔디안과 빅 엔디안의 차이가 왼쪽에서 오른쪽 순서의 바이트 순서에 맞는지 이해한다면?

+0

당신은 잘못된 4 바이트를 처리 중입니다 - 5.7이 아닌 4.7이어야합니다. –

+0

헤더가 어떻게 변경되었는지 알고 싶습니다 ... RIFF to RIFX입니다. , 그러나 이것은 단지? – Anita

답변

2

이 배열은 0부터 인덱스, 그래서 당신이 원하는 바이트 4, 5, 6, 7있다된다. (세 번째 승수 65536하지 256 할 필요가 있습니다)

n=bytearray[4]+(bytearray[5]*256)+(bytearray[6]*65536)+(bytearray[7]*16777216) 

+0

아, 좋습니다. 고맙습니다. – alphablender

관련 문제