繁体   English   中英

Float32Array和DataView之间的差异

[英]discrepancy between Float32Array and 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。

我在这里错过了什么?

谢谢

这使它工作,最后一个参数是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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM