El objeto DataView

Descubra qué es un objeto DataView y cómo utilizarlo
DataViewEs una vista de un ArrayBuffer , como los Typed Arrays, pero en este caso los elementos del array pueden tener diferentes tamaños y tipos.
He aquí un ejemplo:
const buffer = new ArrayBuffer(64)const view = new DataView(buffer) Dado que se trata de una vista de un búfer, podemos especificar desde qué byte queremos comenzar y la longitud:
const view = new DataView(buffer, 10) //start at byte 10 const view = new DataView(buffer, 10, 30) //start at byte 10, and add 30 items Si no agregamos esos argumentos adicionales, la vista comienza en la posición 0 y carga todos los bytes presentes en el buffer.
Hay un conjunto de métodos que podemos usar para agregar datos al búfer:
setInt8()setInt16()setInt32()setUint8()setUint16()setUint32()setFloat32()setFloat64()
Así es como se llama a uno de esos métodos:
const buffer = new ArrayBuffer(64)const view = new DataView(buffer)view.setInt16(0, 2019) De forma predeterminada, los datos se almacenan utilizando la notación big endian . Puede sobrescribir esta configuración y utilizar little endian agregando un tercer parámetro con el truevalor:
const buffer = new ArrayBuffer(64)const view = new DataView(buffer)view.setInt16(0, 2019, true) Aquí es cómo podemos obtener datos de la vista:
getInt8()getInt16()getInt32()getUint8()getUint16()getUint32()getFloat32()getFloat64()
Ejemplo:
const buffer = new ArrayBuffer(64)const view = new DataView(buffer)view.setInt16(0, 2019)view.getInt16(0) //2019 Dado que a DataViewes un ArrayBufferView, tenemos esas 3 propiedades de solo lectura:
bufferapunta al ArrayBuffer originalbyteOffset¿Cuál es el desplazamiento en ese buffer?byteLengthes la longitud de su contenido en bytes
Una cosa que hay que tener en cuenta es que los arreglos tipificados no nos permiten controlar el orden de bytes: utilizan el orden de bytes del sistema . En general, esto funciona bien, porque el caso de uso principal, como dijimos, es utilizar el arreglo localmente, utilizando una de las API multimedia.
Si transfiere los datos de una matriz tipificada a otro sistema, es posible que los datos no estén mal codificados si utiliza Big Endian y usted utiliza Little Endian.
En caso de que necesite este tipo de control, DataView es una elección perfecta.
Tal vez te puede interesar:
- Introducción a React
- Agregar evento de clic a los elementos DOM devueltos desde querySelectorAll
- Cómo cambiar el valor de un nodo DOM
- Cómo comprobar si un elemento DOM tiene una clase
Créditos de la imagen http://dbbeebom