32 비트 float wav 데이터를 해석하는 방법은 무엇입니까? w32 데이터를 I32로 읽은 다음 2^31으로 나눕니다. 그러나 올바른 결과를 얻지 못합니다.32 비트 플로트 wav 데이터를 해석하는 방법
-1
A
답변
2
값은 실수입니다. 값을 부동 소수점 값에 할당하고 그대로 사용해야합니다. float 값을 int32 값으로 읽는다면 reinterpret_cast와 같은 효과가 있습니다.
float f1 = 1.0e5;
int i1 = *reinterpret_cast<int*>(&f1);
// i1 = 1203982336, not 100000
는 잘못된 값을 받고 피할 수없는 경우, 다음 다시 '올바른'값을 얻기 위해, 당신은 재 해석을
float f2 = *reinterpret_cast<float*>(&i1);
// f2 = 1.0e5
여전히해야 할 수있는 데이터의 엔디안을 조정하는 역 할 필요가있다.
2
RIFF header을 확인하십시오. 이것은 Wav 파일의 엔디안을 알려줍니다.
32 비트 부동 소수점을 올바르게 읽는 데 엔디안을 사용하십시오. 예 : 시스템이 리틀 엔디안 (예 : x86 프로세서 기반)이고 wav 파일이 빅 엔디안 (예 : 이전 PPC Mac에서 생성 된 경우) 인 경우 데이터를 읽은 후에 32-bit endian swap을 수행해야합니다 float 변수에 실제로 의미가있는 데이터가 포함되어 있습니다 (일반적으로 -1.0f와 1.0f 사이의 값입니다).
+0
모두 감사합니다! float로 데이터를 읽으면 문제가 해결되었습니다. 데이터는 32 비트 부동 소수점으로 저장되었으므로 int로 읽는 것은 실제로 이해가되지 않았습니다. –
관련 문제
- 1. 32 비트 플로트 데이터로 wav 파일을 쓰는 방법은 무엇입니까?
- 2. Java AudioSystem : 32 비트 Wav 파일 읽기
- 3. 32 비트 플로트 사인파에서 THD를 얼마나 기대합니까?
- 4. C/C++ 비트 OR 및이를 해석하는 방법
- 5. 해석하는 방법 (읽기) 나는 원시 파일이 포함 된 32 비트에 예를 포장 서명 24 비트 데이터가 32 비트
- 6. 64 비트 덤프에서 32 비트 정수 데이터를 참조하는 방법
- 7. 오디오 파일 서비스를 사용하여 32 비트 Float Wav 파일 작성하기
- 8. 32 비트 프로세스를 식별하는 방법
- 9. 비트 변환 플로트 int로
- 10. C++ 비트 플로트 이동
- 11. C++ 데이터를 32 비트 부호없는 int로 저장하는 방법
- 12. 파이썬 : numpy 플로트 배열에 wav 파일 쓰기
- 13. 16 비트 이미지에서 32 비트
- 14. 32 비트 64 비트 호환
- 15. 32 비트/64 비트 OS?
- 16. Java 120 비트 데이터 변환 32 비트
- 17. C++에서 이진수를 해석하는 방법
- 18. si_status 값을 해석하는 방법
- 19. jamod를 사용하여 장치에 연결하고 데이터를 해석하는 방법
- 20. 플로트 표현, 정수 비트 및 분수 비트
- 21. Gluegen 32 비트 대 64 비트 라이브러리
- 22. 64 비트 대 32 비트 플랫폼의 보급
- 23. 32 비트 프로세스를 사용하여 64 비트 프로세스 정보를 찾는 방법
- 24. 64 비트 프로젝트의 32 비트 레코드에서 읽음
- 25. 64 비트 Windows에서 후크 32 비트 프로세스
- 26. 64 비트 컴퓨터에서 32 비트 Python 컴파일
- 27. 32 비트 응용 프로그램의 AppHangXProcB1
- 28. C#의 32 비트 * 32 비트 데이터 문제
- 29. 3 개의 32 비트 식별자를 하나의 32 비트 식별자로 결합합니까?
- 30. 32 비트 서버 및 32/64 비트 클라이언트가있는 서브 버전
파일의 데이터는 실제로 32 비트 부동 상태입니까? 그렇다면 int32로 읽는 것이 명확하게 작동하지 않습니다. –
wav 데이터를 빅 엔디안 또는 리틀 엔디안으로 인코딩 할 수 있습니다. 먼저 바이트를 스왑해야 할 수도 있습니다. –
먼저 올바른 결과를 정의하십시오. –