ArrayBuffer和TypedArray

一、背景

1、产生

ArrayBuffer对象TypeArray视图DataView视图JavaScript操作二进制数据的一个接口。这些对象早就存在,属于独立的规格(2011年2月发布),ES6将它们纳入了ECMAScript规格,并且增加了新的方法。它们都以数组的语法处理二进制数据,所以统称为二进制数组。

这个接口的原始设计目的与WebGL项目有关,所谓WebGL,就是浏览器与显卡之间的通信接口,为了满足JavaScipt与显卡之间大量、实时的数据交换,它们之间的数据通信必须是二进制的,而不能是文本格式。文本格式传递一个32位整数,两端的JavaScript脚本与显卡都要进行格式化,将非常耗时。这时要是存在一种机制,可以像C语言那样直接操作字节,将4个字节的32位整数以二进制形式原封不动地送入显卡,脚本的性能就会大幅提升。

二进制数组就是在这种背景下诞生,它很像C语言的数组,允许开发者以数组下标的形式直接操作内存,大大增强了JavaScript处理二进制数据的能力,使开发者有可能通过JavaScript与操作系统的原生接口进行二进制通信。

2、概述

二进制数组由3类对象组成:

  • ArrayBuffer对象:代表内存中的一段二进制数据,可以通过“视图”进行操作。“视图”部署了数组接口,这意味着,可以用数组的方法操作内存。
  • TypeArray视图:共包括9种类型的视图,比如Uint8Array(无符号8位整数)数组视图、Int16Array(16位整数)数组视图、Float32Array(32位浮点数)数组视图等。
  • DataView视图:可以自定义复合格式的视图,比如第一个字节是Uint8、第二和第三个字节是Int16、第四个字节开始是Float32等,此外还可以自定义字节序。

简而言之,ArrayBuffer对象代表原始的二进制数据,TypeArray视图用于读/写简单类型的二进制数据,DataView视图用于读/写复杂类型的二进制数据。

TypeArray视图支持的数据类型一共有9种(DataView视图支持除Uint8C以外的其他8种),如下表所示

数据类型 字节长度 含义 对应的C语言类型
Int8 1 8位带符号整数 signed char
Uint8 1 8位不带符号整数 unsigned char
Uint8C 1 8位不带符号整数(自动过滤溢出) unsigned char
Int16 2 16位带符号整数 short
Uint16 2 16位不带符号整数 unsigned short
Int32 4 32位带符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值