2013-07-22 2 views
3

생각 나는 Float32Array가 어떻게 작동 하는지를 알았지 만, 내가 거기에없는 것처럼 보입니다. 가능한 가장 단순한 예에서 : 7 이렇게 I 기대 플로트 어레이 제 플로트 될Float32Array와 DataView 사이의 불일치

buffer = new ArrayBuffer(128); 
dataView = new DataView(buffer); 
floatArray = new Float32Array(buffer); 

dataView.setFloat32(8, 7); 
console.log(floatArray[2]); //prints gibberesh 

I가 이해하는 방법은, 8 바이트에서 시작 플로트 설정해야 데이터보기가 될 7.

무엇이 여기에 있습니까?

감사

이 작동하게
+0

'dv.setFloat32 (8, 7);'을 (를) 의미합니까? – sabof

+0

oops, 고정 오타, 또한 인덱스가 2가 아닌 3 :( – Nick

답변

1

내가 확실히 말할 수는 없지만, 마지막 매개 변수는

dataView.setFloat32(8, 7, true); 

이 더 좋을 수도 littleEndian 서비스를 제공합니다. 아마도 Float32Array는 시스템의 littleEndian을 항상 사용하고 DataView는이 중 하나를 사용할 수 있습니다.

var littleEndian = (function() { 
    var buffer = new ArrayBuffer(2); 
    new DataView(buffer).setInt16(0, 256, true); 
    return new Int16Array(buffer)[0] === 256; 
})(); 

dataView.setFloat32(8, 7, littleEndian); 
+0

허, 둘 다 똑같은 일을하는 게 기본이 아닙니다. 고마워요! – Nick

+0

인상이 있습니다. * 배열은 계산을위한 것이고 DataView는 이진을위한 것입니다. 파일. – sabof