2017-09-11 12 views
1

에 두 배로 [64, -124, 12, 0, 0, 0, 0, 0] 내가 641.5변환 uint8array은 내가 arraybuffer이 나는에서 더블 values.For 예를 얻으려면 자바 스크립트

얻을 것 어떤 아이디어?

+0

8. 우리에게 보여 덩어리를 취할 수 있고 yoyr 논리는 무엇인가? – Edwin

+0

나는 오디오 파일의 바이트로 arraybuffer를 반환하는 함수를 가지고있다. function getBuffer (resolve) { var reader = new FileReader(); reader.readAsArrayBuffer (fileData); reader.onload = function() { var arrayBuffer = reader.result var bytes = new Uint8Array (arrayBuffer); 해결 (바이트); } } – user7597554

+0

0에서 255까지의 바이트 대신에 double 값 – user7597554

답변

0

우수 answerT.J. Crowder으로 수정하고 주어진 바이트에 DataView#setUint8을 사용할 수 있습니다. 여러 번호는

var data = [64, -124, 12, 0, 0, 0, 0, 0]; 
 

 
// Create a buffer 
 
var buf = new ArrayBuffer(8); 
 
// Create a data view of it 
 
var view = new DataView(buf); 
 

 
// set bytes 
 
data.forEach(function (b, i) { 
 
    view.setUint8(i, b); 
 
}); 
 

 
// Read the bits as a float/native 64-bit double 
 
var num = view.getFloat64(0); 
 
// Done 
 
console.log(num);

, 당신은 무엇을 시도했다

function getFloat(array) { 
 
    var view = new DataView(new ArrayBuffer(8)); 
 
    array.forEach(function (b, i) { 
 
     view.setUint8(i, b); 
 
    }); 
 
    return view.getFloat64(0); 
 
} 
 

 
var data = [64, -124, 12, 0, 0, 0, 0, 0, 64, -124, 12, 0, 0, 0, 0, 0], 
 
    i = 0, 
 
    result = []; 
 

 
while (i < data.length) { 
 
    result.push(getFloat(data.slice(i, i + 8))); 
 
    i += 8; 
 
} 
 

 
console.log(result);

+0

이 필요합니다. 길이가 더 길면 어떻게 될까요? 예 : var data = [64, -124, 12, 0, 0, 0, 0, 0,64, -124, 12, 0, 0, 0, 0, 0]; 그러면 결과는 다음과 같습니다. [641.5,641.5] – user7597554

+0

@ user7597554, edit를 참조하십시오. –

+0

위대한 분입니다. 정말 고마워요. – user7597554