![](/img/trans.png)
[英]Why Int16Array to ArrayBuffer convert back Int16Array, result is different?
[英]Conversion Error : ArrayBuffer to Int16Array
這應該很簡單,但是我不確定為什么會收到錯誤,我將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浮點數)在那里,這意味着“破解”問題可能行不通。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.