2013-04-04 6 views
1

컨텍스트 : 리프/웨이브 파일을 구문 분석하고 있습니다. Riff 청크 내의 FourCC 값을 식별하는 documentation이 있습니다. 다음은 웨이브 파일의 중요한 부분입니다. 두 .WAV 특정 청크RIFF 웨이브 파일 형식 : FourCC 값 및 HEX 변환

FOURCC ID는 :

string "fmt " 
Hex "666D7420" 
int "1718449184" 

그리고,이 데이터 같아야 값 :

Chunk ID "fmt " (0x666D7420) 
Chunk ID "data" (0x64617461) 

따라서 이러한 FMT는 같아야 값 :

string "data" 
Hex "64617461" 
int "1684108385" 
이제

, 내가 유효한 .WAV 파일에 읽기의 FOURCC fmtChunkID INT는 항상 FMT :

fmt int: 
int "544501094" 

그리고 데이터 INT 항상 :

data int: 
int "1635017060" 

질문 : 문서화 된 16 진수 값이 스트림에서 반환하는 int와 일치하지 않는 이유는 무엇입니까? 나는 Hex에서 Int 로의 변환에 대해 이해하지 못한다고 생각한다.

추가 : 용의자 fmt 값이 "1718449184"인 .wav 파서 코드가 온라인에서 발견되었습니다. 그러나 나는 fmt 값 "544501094"로 더 많은 것을 찾는다. 마지막으로 Google에서 "1718449184 AND 544501094"를 검색하십시오. 아무것도.

도움 주셔서 감사합니다.

답변

2

엔디안. 0x20746d66의 10 진수를 참조하십시오. (0x20746d66은 0x666d7420의 바이트 반전입니다.)

모든 바이트는 올바른 위치에 있어야합니다. 메모리와 메모리를 부담없이 읽는다면 CPU와 File Format에 따라 바이트 순서를 바꿀 수 있습니다.

"빅 엔디안"및 "리틀 엔디 언"에 대한 내용을 읽으십시오. 어떤 사람들은 그것에 대해 아주 좋은 길일 것입니다. 그러나 실제로 파일 포맷, 네트워크 트래픽, 하드웨어와의 인터페이스, 다른 많은 곳을 &으로 취급하는 것은 실제로 매우 쉽고 중요합니다.

+1

David, 나는 엔디안 순서가 관련되어 있다고 생각하지만 경험이 많은 프로그래머가 달리 말했습니다. 나는 이것에 대해 살펴보고 제대로 읽었을 때 답을 표시 할 것입니다. 고맙습니다! – Chadd