我想使用JavaScript將ArrayBuffer轉換爲int。我的應用程序使用WebSocket,並在發件人端,我有一個0到4之間的整數。我在C#中轉換此ArraySegment。我通過web套接字發送給我的JavaScript客戶端,它將其作爲ArrayBuffer接收。在ArrayList中將ArrayBuffer轉換爲int
ArrayBuffer現在保存的值爲0或1或2或3.我該如何「讀取」該值?
我想使用JavaScript將ArrayBuffer轉換爲int。我的應用程序使用WebSocket,並在發件人端,我有一個0到4之間的整數。我在C#中轉換此ArraySegment。我通過web套接字發送給我的JavaScript客戶端,它將其作爲ArrayBuffer接收。在ArrayList中將ArrayBuffer轉換爲int
ArrayBuffer現在保存的值爲0或1或2或3.我該如何「讀取」該值?
使用DataView:
var buffer = new ArrayBuffer(16);
var dv = new DataView(buffer, 0);
dv.setInt16(1, 42);
dv.getInt16(1); //42
這個基數是零還是從1開始,就像你在例子中那樣? –
我使用這個:var dv = new DataView(e.Data); var index = dv.getInt16(1);但我得到的是零?我知道(爲了測試,我通過了'3')? –
在DataView構造函數中相對於ArrayBuffer的偏移量,在'setInt16'或'getInt16'中相對於DataView。 –
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];
爲什麼不使用數據視圖? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView –
@stdob這看起來很酷。我需要測試第一名。謝謝 –
@ stdob--這個DataView與所有現代瀏覽器兼容的問題很快? –