3

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

我在这里想念什么?

谢谢

4

1 回答 1

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);
于 2013-07-22T03:39:35.583 回答