Skip to content

typed arrays

参考

概念

类型化数组和数组是完全不同的数据结构,无法共用原型方法,存储结构也不相同。

类型化数组分为 2 种:

  • 缓存:表示了数据块的对象。它没有格式可言,没有提供访问其内容的机制。必须借助视图来读取。
  • 视图:它提供了上下文(数据类型、起始偏移量和元素数量)来访问缓存中的内存
分类name名称说明
缓存ArrayBuffer数组缓冲区类固定长度的原始二进制数据缓冲区的类,无法直接操作
缓存SharedArrayBuffer共享数组缓冲区类ArrayBuffer 的扩展,允许在多线程之间共享同二进制数据缓冲区
视图DataView数据视图提供了灵活的读写方式,适合处理不同数据类型和字节对齐的情况
视图TypedArrayView类型化视图处理同类型的二进制数据

ArrayBuffer

// TODO

SharedArrayBuffer

// TODO

DataView

// TODO

TypedArrayView

类型化视图

TypeSize(Byte)对应的接口定义(Web-IDL)等效的 C 语言类型Note
Int8Array1byteint8_t8 位有符号整数(补码)
Uint8Array1octetuint8_t8 位无符号整数。
Uint8ClampedArray1octetuint8_t8 位无符号整数(值会被裁剪)
Int16Array2shortint16_t16 位有符号整数(补码)
Uint16Array2unsigned shortuint16_t16 位无符号整数
Int32Array4longint32_t32 位有符号整数(补码)
Uint32Array4unsigned longuint32_t32 位无符号整数
Float32Array4unrestricted floatfloat7 位有效数字,如 1.123456)
Float64Array8unrestricted doubledouble16 位有效数字,如 1.123...15)
BigInt64Array8bigintint64_t (signed long long)64 位有符号整数(补码)
BigUint64Array8bigintuint64_t (unsigned long long)64 位无符号整数

注:特定类型取值范围的计算

  • 二进制中位的状态数: 2,即 [0,1]
  • 每个字节的位数: 8,即[1][2][3][4][5][6][7][8]
  • 每字节的状态数: 2^8 => 256 ,记做 n
  • 无符号整数的取值范围: [0, 256*n]
  • 有符号整数的取值范围: [(256*n)/2, 0, ((256*n)/2)-1]

Released under the MIT License.