这应该很简单,但是我不确定为什么会出现错误,我将ArrayBuffer作为参数使用构造函数,如mdn所示,但是我将错误作为无效参数,(我检查了带有dataview的ps,数据仅是Int16)
代码是:
var view= DataView(arrayBuf);
console.log('arrayBuf.byteLength : '+arrayBuf.byteLength);
console.log('data at 0 : '+view.getInt16(0));
console.log('data at 1 : '+view.getInt16(1));
var int16arry = new Int16Array(arrayBuf);
控制台输出为:
"arrayBuf.byteLength : 117"
"data at 0 : 22720"
"data at 1 : -16315"
Error: invalid arguments
我的错是什么?
简短的答案是您的arrayBuffer大小错误。您可以使用:
var int16Array = new Int16Array(arrayBuf, 0, Math.floor(arrayBuf.byteLength / 2));
要破解掉这个问题。
特定案例的评论:
我尝试读取您的库的源,但是我看不到为什么您得到了额外的字节(或丢失了什么)。
您正在获取的数据应该是16位整数,但由于某种原因,您那里的其他数据占用的字节数是不均匀的,据我所知,根据源代码,应该有一些双精度(javascript浮点数)在那里,这意味着“破解”问题可能行不通。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句