What is DataView.setUint16() in JavaScript?

The DataView.prototype.setUint16() is a method in JavaScript that takes an unsigned 16-bit integer value and sets this value at the specified byte offset from the start of the DataView object.

Syntax

The syntax of the method is as follows:


setUint16(byteOffset : Number, value : Number, [littleEndian = false : Boolean]): void

Parameters

  • byteOffset: A number specifying the byte offset from the start of the view.

  • value: An unsigned 16-bit integer that will be stored at the specified byte offset.

  • littleEndian: An optional parameter specifying whether the 16-bit integer is stored in little-endian format or big-endian.

    By default, the value is False which means a big-endian value is stored.

Binary data in JavaScript and the DataView class

While many languages provide byte arrays to manipulate binary data, things work differently in JavaScript.

The most fundamental binary object in JavaScript is the ArrayBuffer which stores a reference to a fixed-length contiguous memory space that contains a raw sequence of bytes.

However, to interpret and manipulate the ArrayBuffer, we need something called view objects.

View objects

View objects do not store any data but provide different interfaces to read and write byte data in the raw buffer.

The DataView class is one such view over the ArrayBuffer that provides flexibility in interpreting the buffer.

By using DataView objects, we can access the data in any format we like and at any offset. Moreover, the format in which data is interpreted is done at the method call time.

Syntax of DataView

The syntax to declare a DataView object is as follows:


new DataView(buffer, [byteOffset], [byteLength])

  • buffer: The ArrayBuffer object containing the raw sequence of bytes.

  • byteOffset: The starting byte position of the view from the starting position of ArrayBuffer. The default value is 0.

  • byteLength: The byte length that will be viewed from the specified byteOffset. By default, the whole buffer is viewed.

Now that we have some idea of binary data in JavaScript and declaring DataView objects, let’s look at how can we use dataView.setUint16() in a program.

Code

buffer = new ArrayBuffer(12);
let dataView = new DataView(buffer);
dataView.setUint16(1, 65535)
console.log(dataView.getUint16(1))

Explanation

  • In the example above, we declare an ArrayBuffer with length of 12 bytes.

  • We create the object dataView using the constructor of the DataView class and passing the buffer object to it.

  • By using the dataView.setUint16(1, 65535) function call, we store the value 65535 in the 16 bits after the first byte from the start of the view.

  • By using the dataView.getUint16(1) method, we verify that the value has been set successfully in the buffer.