마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

wav파일을 byte[] 배열에 넣었는데 double[]로 변환하고 싶습니다.

0 추천

      FileInputStream fis = new FileInputStream(wavFile);
                byte[] buffer = new byte[(int) wavFile.length()];
            
                int readcount = 0;

                while ((readcount = fis.read(buffer)) != -1) {
              
                }
                fis.close();
            

 

이렇게 wav file을 buffer안에 넣었는데 buffer를 double[]로 형변환 하려고하는데 잘 안되네요 ... (filter를 걸기위해 double로 변환해야함) 어떻게 해야되나요? 

while문 안에서 데이터 들어올때마다 변환하고 싶습니다.

kkong_93 (680 포인트) 님이 2020년 10월 15일 질문
https://docs.oracle.com/javase/7/docs/api/java/lang/Byte.html#doubleValue()
개별적으로 변환해서 array에 넣거나....
Double이 Byte보다 범위가 큰 데이터이니까 (double[]) byteArray  한번 해보시죠.
ByteBuffer.wrap(buffer, 0, 8).order(ByteOrder.BIG_ENDIAN).getDouble();  지금 이런식으로 한번 해보고있는데 잘 안되네요 ㅠㅠ
이 부분에 대해 잘 아시는 분이 답을 줄 수 있으려면, 먼저 질문의 내용이 어떤 걸 하시려고 하는데 어떤 부분이 어떻게 안되는지 자세하게 해주시는 것이 좋다고 봅니다. StackOverflow에서 검색을 해보시거나 거기에 질문을 해보시는 것도 옵션이구요.

1개의 답변

0 추천
wav file format은 별도의 헤더를 가지고 있기 때문에,

전체를 byte type으로 읽었더라도 간단히 double형으로 변환하는 것은 어렵습니다.

또한 wav의 pcm data는 일반적으로 double type으로 변환해서 사용하지 않기 때문에

어떤 용도의 double형으로 바꾸는지 부터 명확히 할 필요가 있어 보입니다.
디자이너정 (42,810 포인트) 님이 2020년 10월 17일 답변
...