2015-07-04 74 views
3

我想使用JavaScript將ArrayBuffer轉換爲int。我的應用程序使用WebSocket,並在發件人端,我有一個0到4之間的整數。我在C#中轉換此ArraySegment。我通過web套接字發送給我的JavaScript客戶端,它將其作爲ArrayBuffer接收。在ArrayList中將ArrayBuffer轉換爲int

ArrayBuffer現在保存的值爲0或1或2或3.我該如何「讀取」該值?

+2

爲什麼不使用數據視圖? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView –

+0

@stdob這看起來很酷。我需要測試第一名。謝謝 –

+0

@ stdob--這個DataView與所有現代瀏覽器兼容的問題很快? –

回答

6

使用DataView

var buffer = new ArrayBuffer(16); 
var dv = new DataView(buffer, 0); 

dv.setInt16(1, 42); 
dv.getInt16(1); //42 
+0

這個基數是零還是從1開始,就像你在例子中那樣? –

+0

我使用這個:var dv = new DataView(e.Data); var index = dv.getInt16(1);但我得到的是零?我知道(爲了測試,我通過了'3')? –

+0

在DataView構造函數中相對於ArrayBuffer的偏移量,在'setInt16'或'getInt16'中相對於DataView。 –

0
var i = new Uint8Array(buf)[0]; 

然後i是你所需要的。如果您需要subarray()

ArrayBuffer.prototype.subarray = function (a, b) { 
    var u = new Uint8Array(this); 
    return new Uint8Array(u.subarray(a, b)).buffer;; 
}; 

var i = new Uint8Array(buf.subarray(0,1))[0];