Ответ 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 зависит от платформы. Принять меры предосторожности и соображения для этих отступы