2016-06-03 3 views

답변

1

당신이 요구하는지 전혀 모르겠지만, 당신이 원하는 것은 하나의 부호 값으로 한 번에 두 바이트를 읽을 경우,이 같은 것을 사용할 수 없음 :

File f = new File("/path/to/file"); 
DataInputStream dis = new DataInputStream(new FileInputStream(f)); 

List<Integer> values = new ArrayList<>(); 

try { 
    while (true){ 
     values.add(dis.readUnsignedShort()); 
    } 
} catch(EOFException e){ 
    /* you've read everything at this point */ 
} finally { 
    dis.close(); 
} 

당신은 변경할 수 있습니다 values을 그 시점의 프리미티브 배열에 넣거나 목록을 직접 사용하십시오.

+0

감사합니다! 상황은 내가 Audiorecord (자바)에 의해 만들어진 오디오 파일을 가지고 있고 내가 선택한 인코딩 방법은 PCM_16bit입니다. 따라서 데이터는 각 진폭 값에 대해 2 바이트 여야합니다. 그리고 나는 FFT와 같은 소리를 분석 할 필요가 있습니다. 그래서이 오디오를 배열로 변경하고 싶습니다. 하지만 나는 자바가 처음이다. 16 비트 데이터를 배열로 변경하는 방법을 모르겠습니다. – MarvinC

+0

DataInputStream의 문서를 본 후에는이 질문이 너무 어리석은 것 같습니다. 그러나 아직도 당신의 대답에 감사드립니다. – MarvinC

관련 문제