Float32Array和DataView之间的差异

时间:2013-07-22 03:00:47

标签: javascript dataview

以为我理解了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。

我在这里缺少什么?

由于

1 个答案:

答案 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);