Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Objets natifs standards
  5. DataView

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

DataView

Baseline Widely available *

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.

La vueDataView fournit une interface de bas niveau pour lire et écrire des données de différents types numériques dans un objetArrayBuffer, quel que soit le« boutisme » (endianness) de la plateforme.

Description

Le boutisme (endianness)

Les formats numériques sur plusieurs octets sont représentés différemment en mémoire selon l'architecture de la machine (voirla page du glossaire sur le boutisme pour plus d'explications). Les accesseursDataView permettent de contrôler explicitement la façon dont se fait l'accès aux données, quel que soit le boutisme de l'ordinateur.

js
var littleEndian = (function () {  var buffer = new ArrayBuffer(2);  new DataView(buffer).setInt16(0, 256, true /* littleEndian */);  // Int16Array utilise le boutisme de la plateforme  return new Int16Array(buffer)[0] === 256;})();console.log(littleEndian); // true ou false

Gestion des valeurs entières sur 64 bits

Certains navigateurs ne prennent pas en chargeDataView.prototype.setBigInt64() etDataView.prototype.setBigUint64(). Pour que les opérations sur 64 bits fonctionnent pour ces navigateurs, il est possible d'implémenter une fonctiongetUint64() qui permet d'obtenir des valeurs avec une précision correcte jusqu'àNumber.MAX_SAFE_INTEGER, ce qui peut être suffisant selon le cas d'usage.

js
function getUint64(dataview, byteOffset, littleEndian) {  // on décompose la valeur 64 sur bits en deux nombres 32 bits  const gauche = dataview.getUint32(byteOffset, littleEndian);  const droite = dataview.getUint32(byteOffset + 4, littleEndian);  // on combine les deux valeurs 32 bits  const combinaison = littleEndian    ? gauche + 2 ** 32 * droite    : 2 ** 32 * gauche + droite;  if (!Number.isSafeInteger(combinaison)) {    console.warn(      combinaison,      " dépasse MAX_SAFE_INTEGER : perte de précision !",    );  }  return combinaison;}

On peut également créer un objetBigInt si on veut avoir accès à 64 bits. Sur le plan des performances, les grands entiers (BigInt ont une taille variable, aussi leur manipulation sera nécessairement plus lente que celle des nombres stockés sur 32 bits. Ceci étant écrit, les valeurs nativesBigInt seront plus performantes que les implémentations tierces (bibliothèques, etc.).

js
const BigInt = window.BigInt,  bigThirtyTwo = BigInt(32),  bigZero = BigInt(0);function getUint64BigInt(dataview, byteOffset, littleEndian) {  // on décompose la valeur 64 sur bits en deux nombres 32 bits (4 octets)  const gauche = BigInt(    dataview.getUint32(byteOffset | 0, !!littleEndian) >>> 0,  );  const droite = BigInt(    dataview.getUint32(((byteOffset | 0) + 4) | 0, !!littleEndian) >>> 0,  );  // on recombine les deux valeurs sur 32 bits et on la renvoie  return littleEndian    ? (droite << bigThirtyTwo) | gauche    : (gauche << bigThirtyTwo) | droite;}

Constructeur

DataView()

Crée un nouvel objetDataView.

Propriétés des instances

DataView.prototype.buffer

L'objetArrayBuffer référencé par la vue courante. Cette propriété est déterminée au moment de la construction et est donc uniquementaccessible en lecture seule.

DataView.prototype.byteLength

La longueur, exprimée en octets, de cette vue, à partir du début de l'objetArrayBuffer correspondant. Cette propriété est déterminée au moment de la construction et est donc uniquementaccessible en lecture seule.

DataView.prototype.byteOffset

Le décalage, exprimé en octets, de cette vue, par rapport au début de l'objetArrayBuffer correspondant. Cette propriété est déterminée au moment de la construction et est donc uniquementaccessible en lecture seule.

Méthodes des instances

DataView.prototype.getInt8()

Obtient un entier signé sur 8 bits (équivalent au typebyte) situé à l'octet relatif au début de la vue.

DataView.prototype.getUint8()

Obtient un entier non-signé sur 8 bits (équivalent au typeunsigned byte) situé à l'octet relatif au début de la vue.

DataView.prototype.getInt16()

Obtient un entier signé sur 16 bits (équivalent au typeshort) situé à l'octet relatif au début de la vue.

DataView.prototype.getUint16()

Obtient un entier non-signé sur 16 bits (équivalent au typeunsigned short) situé à l'octet relatif au début de la vue.

DataView.prototype.getInt32()

Obtient un entier signé sur 32 bits (équivalent au typelong) situé à l'octet relatif au début de la vue.

DataView.prototype.getUint32()

Obtient un entier non-signé sur 32 bits (équivalent au typeunsigned long) situé à l'octet relatif au début de la vue.

DataView.prototype.getFloat32()

Obtient un nombre flottant signé sur 32 bits (équivalent au typefloat) situé à l'octet relatif au début de la vue.

DataView.prototype.getFloat64()

Obtient un nombre flottant signé sur 64 bits (équivalent au typedouble) situé à l'octet relatif au début de la vue.

DataView.prototype.getBigInt64()

Obtient un entier signé sur 64 bits (équivalent au typelong long) situé à l'octet relatif au début de la vue.

DataView.prototype.getBigUint64()

Obtient un entier non-signé sur 64 bits (équivalent au typeunsigned long long) situé à l'octet relatif au début de la vue.

DataView.prototype.setInt8()

Enregistre un entier signé sur 8 bits (équivalent au typebyte) situé à l'octet relatif au début de la vue.

DataView.prototype.setUint8()

Enregistre un entier non-signé sur 8 bits (équivalent au typeunsigned byte) situé à l'octet relatif au début de la vue.

DataView.prototype.setInt16()

Enregistre un entier signé sur 16 bits (équivalent au typeshort) situé à l'octet relatif au début de la vue.

DataView.prototype.setUint16()

Enregistre un entier non-signé sur 16 bits (équivalent au typeunsigned short) situé à l'octet relatif au début de la vue.

DataView.prototype.setInt32()

Enregistre un entier signé sur 32 bits (équivalent au typelong) situé à l'octet relatif au début de la vue.

DataView.prototype.setUint32()

Enregistre un entier non-signé sur 32 bits (équivalent au typeunsigned long) situé à l'octet relatif au début de la vue.

DataView.prototype.setFloat32()

Enregistre un entier signé sur 32 bits (équivalent au typefloat) situé à l'octet relatif au début de la vue.

DataView.prototype.setFloat64()

Enregistre un entier signé sur 64 bits (équivalent au typedouble) situé à l'octet relatif au début de la vue.

DataView.prototype.setBigInt64()

Enregistre un entier signé sur 64 bits (équivalent au typelong long) situé à l'octet relatif au début de la vue.

DataView.prototype.setBigUint64()

Enregistre un entier non-signé sur 64 bits (équivalent au typeunsigned long long) situé à l'octet relatif au début de la vue.

Exemples

UtiliserDataView

js
let buffer = new ArrayBuffer(16);let view = new DataView(buffer, 0);view.setInt16(1, 42);view.getInt16(1); // 42

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-dataview-objects

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp