2015-07-04 3 views
3

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

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

+2

Почему бы не использовать DataView? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView –

+0

@stdob Это выглядит круто. Мне нужно проверить 1-й. спасибо –

+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]; 
Смежные вопросы