以为我理解了Float32Array是如何工作的,但看起来我并不完全在那里。 在最简单的例子中:
buffer = new ArrayBuffer(128);
dataView = new DataView(buffer);
floatArray = new Float32Array(buffer);
dataView.setFloat32(8, 7);
console.log(floatArray[2]); //prints gibberesh
我理解它的方式,数据视图应该设置一个从第8个字节开始的浮点数为7, 所以浮点数组中的第三个浮点数我预计为7。
我在这里缺少什么?
由于
答案 0 :(得分:1)
这使它工作,最后一个参数是littleEndian
dataView.setFloat32(8, 7, true);
这可能会更好,虽然我不能肯定地说。据推测,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);