95 votes

javascript ArrayBuffer, à quoi ça sert ?

Peut-être qu'il est tard, ou peut-être que c'est le saké, mais je viens de lire les docs pour Tampon de tableau et je n'arrive pas à penser à une seule chose pour laquelle ce serait vraiment utile.

Quelqu'un peut-il m'éclairer ?

Y a-t-il des utilisations auxquelles quelqu'un peut penser qui n'impliquent pas d'images ?

77voto

Imdad Points 2904

Fondamentalement, ArrayBuffer est utilisé pour conserver des données binaires. Il peut s'agir des données binaires d'une image par exemple.

Dans d'autres langues, les tampons s'avèrent très utiles. Oui, bien sûr, il est un peu plus difficile à comprendre/utiliser que les autres types de données.

ArrayBuffer peut être utilisé pour obtenir les données d'une image jpg (octets RGB) et en produire un png en ajoutant l'octet alpha (i.e. RGBA).

Le site de Mozilla a donné une petite utilisation de ArrayBuffer aquí

Travailler avec des structures de données complexes

En combinant un seul tampon avec plusieurs vues de différents types, commençant à différents décalages dans la mémoire tampon, vous pouvez interagir avec objets de données contenant plusieurs types de données. Cela vous permet, par exemple par exemple, d'interagir avec des structures de données complexes de WebGL des fichiers de données, ou les structures C que vous devez utiliser lors de l'utilisation js-ctypes .

Considérons cette structure C :

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

Vous pouvez accéder à un tampon contenant des données dans ce format de la manière suivante :

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);  

Vous pouvez alors accéder, par exemple, au montant dû avec amountDueView[0] .

Note : Le site alignement des structures de données dans une structure C est dépend de la plate-forme. Prenez des précautions et des considérations pour ces différences de rembourrage.

10voto

Dull Bananas Points 355

Un site ArrayBuffer est un morceau de données binaires dans la RAM. Il y a plusieurs façons d'"ouvrir" un fichier ArrayBuffer pour la lecture et l'écriture :

  • Tableaux typés comme Uint16Array L'utilisateur peut lire et écrire le tampon en le traitant comme un tableau d'entiers. Ils ne vous permettent pas de contrôler endiveté il utilise l'endive préférée du CPU. Uint8Array est utile pour contrôler les octets individuels (copie, découpage, etc.).

  • DataView n'est pas aussi simple, mais elle vous donne plus de contrôle. Elle vous permet de choisir l'endive, la taille de l'entier et l'index de l'octet (par exemple, vous pouvez accéder à un entier de 32 bits à un index qui n'est pas divisible par 32 bits). Ces éléments peuvent être spécifiés à chaque fois que vous lisez et écrivez un entier avec le même fichier DataView .

Plus d'informations : https://javascript.info/arraybuffer-binary-arrays

7voto

Jonathan Points 139

Outre les images, il est utile pour construire et détruire avec précision des paquets de données réseau de bas niveau utilisés dans des protocoles comme UDP.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X