Преобразование ArrayBuffer в int в Javascript


Я пытаюсь преобразовать ArrayBuffer в int с помощью JavaScript. Мое приложение использует WebSocket, и на стороне отправителя у меня есть целое число между 0 и 4. Я преобразую этот ArraySegment в C#. Я посылаю это через веб-сокеты моему JavaScript-клиенту, который получает его в виде ArrayBuffer.

ArrayBuffer теперь содержит значение 0 или 1, или 2, или 3. Как я могу "прочитать" это значение?

2 4

2 ответа:

Use DataView :

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

dv.setInt16(1, 42);
dv.getInt16(1); //42
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];