簡體   English   中英

轉換錯誤:ArrayBuffer到Int16Array

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM