Подтвердить что ты не робот

Javascript ArrayBuffer, для чего он нужен?

Может быть, уже поздно, или, может быть, ради этого, но я просто читаю документы для ArrayBuffer и не могу придумать ни одной вещи, для которой это было бы действительно полезно.

Может ли кто-нибудь просветить меня?

Кто-нибудь может подумать, что это не касается изображений?

4b9b3361

Ответ 1

В основном ArrayBuffer используется для хранения двоичных данных. Например, это могут быть двоичные данные изображения.

В других языках буферы оказались очень полезными. Да, конечно, это немного сложно понять/использовать, чем другие типы данных.

ArrayBuffer может использоваться для получения данных изображения jpg (RGB-байтов) и создания из него png путем добавления альфа-байта (то есть RGBA).

Сайт Mozilla дал небольшое использование ArrayBuffer здесь

Работа со сложными структурами данных

Объединив один буфер с несколькими представлениями разных типов, начиная с разных смещений в буфере, вы можете взаимодействовать с объекты данных, содержащие несколько типов данных. Это позволяет вам, для Например, взаимодействовать со сложными структурами данных из WebGL, файлов данных, или структуры C, которые необходимо использовать при использовании js-ctypes.

Рассмотрим эту структуру C:

struct someStruct {  
  unsigned long id;  
  char username[16];  
  float amountDue;  
};  

Вы можете получить доступ к буферу, содержащему данные в следующем формате:

var buffer = new ArrayBuffer(24);  

// ... read the data into the buffer ...  

var idView = new Uint32Array(buffer, 0, 1);  
var usernameView = new Uint8Array(buffer, 4, 16);  
var amountDueView = new Float32Array(buffer, 20, 1);  

Затем вы можете получить доступ, например, к сумме amountDueView[0].

  Примечание: выравнивание структуры данных в структуре C   зависит от платформы. Принять меры предосторожности и соображения для этих   отступы

Ответ 2

Помимо изображений, он полезен для точного построения и уничтожения сетевых пакетов данных низкого уровня, используемых в таких протоколах, как UDP.