[英]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.