ECMAScript 2019:JavaScript 中的二进制数据操作

在过去,JavaScript 一直被认为是一种文本处理语言。但随着技术的不断发展,越来越多的应用需要处理二进制数据。为了满足这种需求,ECMAScript 2019 引入了一种新的数据类型:ArrayBuffer,以及一套用于处理这种数据类型的 API。

ArrayBuffer

ArrayBuffer 是一种可以存储二进制数据的缓冲区。它类似于数组,但是只能存储数字类型的数据。我们可以通过以下方式创建一个 ArrayBuffer 对象:

----- ------ - --- ---------------

上述代码创建了一个长度为 8 字节的 ArrayBuffer 对象。我们可以通过以下方式访问这个对象中的数据:

----- --------- - --- -------------------
------------ - ---

-------------------------- -- --

上述代码创建了一个 Int32Array 对象,它使用了上面创建的 ArrayBuffer 对象作为数据源。我们可以将 int32View 视为一个由 32 位整数组成的数组,它的长度是 8 字节除以 4 字节得到的 2。我们将第一个元素设置为 42,并输出它的值。

DataView

DataView 是一种用于读写 ArrayBuffer 对象中数据的 API。它可以让我们以不同的字节顺序读写数据,这对于处理不同的二进制数据格式非常有用。以下是一个使用 DataView 读写 ArrayBuffer 对象的示例:

----- ------ - --- ---------------

----- ---- - --- -----------------
---------------- ----
---------------- -----

------------------------------ -- --
------------------------------ -- ---

上述代码创建了一个长度为 8 字节的 ArrayBuffer 对象,并使用 DataView 对象设置了前两个字节和后两个字节的值。我们可以通过 getInt16 方法读取这些值,并输出它们的值。

TypedArray

TypedArray 是一组由 ArrayBuffer 对象支持的数组类型。这些类型包括 Int8ArrayUint8ArrayInt16ArrayUint16ArrayInt32ArrayUint32ArrayFloat32ArrayFloat64Array。这些类型可以让我们按照特定的格式读写 ArrayBuffer 对象中的数据。以下是一个使用 TypedArray 读写 ArrayBuffer 对象的示例:

----- ------ - --- ---------------

----- --------- - --- -------------------
------------ - ---

----- -------- - --- ------------------
---------------------- -- ---- -- -- -- -- -- -- --

上述代码创建了一个长度为 8 字节的 ArrayBuffer 对象,并使用 Int32Array 对象将第一个元素设置为 42。接着,我们使用 Int8Array 对象读取这个数组,输出它的值。由于 Int8Array 将每个元素视为一个字节,因此我们可以看到输出的数组是由一个 42 和七个 0 组成的。

结论

ECMAScript 2019 引入了一套用于处理二进制数据的 API,这可以让我们更方便地处理不同的二进制数据格式。ArrayBufferDataViewTypedArray 是这套 API 的核心,它们可以让我们读写二进制数据,并按照特定的格式进行处理。如果你需要处理二进制数据,那么这些 API 会对你非常有用。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6726abb02e7021665e1b08f9