2014-09-23 3 views
0

У меня есть массив:Как я могу получить dataType, когда Array является кастом в ArrayBuffer?

var dataArray = new Uint16Array(256); 

тогда мой массив идет через nodeJs к другому ПК. (nodejs binaryType = "arraybuffer")

Как узнать на другом клиенте, что мне нужно отдать в Uint16Array, а не Uint8Array?

Примечание: глубина бит и длина массива являются динамическим значением и могут изменяться во время работы программы.

Спасибо :)

+0

ОК спасибо. поэтому я должен передавать эту информацию с каждым arrayBuffer. Знаете ли вы умный способ прикрепить эту информацию? – Cracker0dks

+0

Объединил мои комментарии в ответ. –

ответ

1

При передаче данных в ArrayBuffer его просто двоичные данные буфера, вы должны знать, с какой вы хотите посмотреть, чтобы получить доступ к данным с. TypedArrays - это всего лишь вид на двоичный код ArrayBuffer.

Есть несколько способов справиться с этим:

  • Используйте различные маршруты представить свои данные
  • Добавить префикс байт данных
  • И, возможно, лучшим решением, не меняют свой тип данных среднее применение. imho чистый интерфейс должен обрабатывать только один тип данных.
+0

Хорошо спасибо. Но у меня есть аудиоданные и использую разные выборки и скорости передачи. могу ли я добавить префиксный байт без создания нового массива? – Cracker0dks

+0

В чем проблема с использованием разных маршрутов? 'TypedArray' не изменяются по размеру, вам нужно будет скопировать данные в другой 'ArrayBuffer' с одним байтовым смещением. –

+0

Что именно вы подразумеваете под маршрутами? У меня есть только сервер nodeJs и только одна функция отправки и одна функция resive. Как можно сделать больше, чем этот маршрут? – Cracker0dks