这应该是直截了当的,但我不知道为什么我得到错误,我使用带有ArrayBuffer的构造函数作为参数,如mdn所示,但我得到错误作为无效参数,(ps用dataview我检查过,数据只是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
我的错误是什么?
答案 0 :(得分:0)
简短的回答是你的arrayBuffer大小错误。您可以使用:
var int16Array = new Int16Array(arrayBuf, 0, Math.floor(arrayBuf.byteLength / 2));
破解远离问题。
案例特定评论:
我试过阅读你的库的源代码,但我无法理解为什么你得到那个额外的字节(或者缺少的东西)。
你得到的数据应该是16位整数,但由于某种原因你有其他数据占用不均匀的字节数,据我所知,根据来源我应该有一些双打(javascript浮点数)在那里,意味着“黑客”解决问题可能不起作用。