北京办公用品网站建设,做了微网站,杭州专业网站设计制作,wordpress分析类主题二进制数组【ArrayBuffer对象、Type的Array视图和DataView视图】JavaScript操作二进制数据的一个接口。
这些接口原本是和WebGL有关【WebGL是浏览器与显卡之间的通信接口】#xff0c;为了满足JavaScript与显卡之间大量、实时数据交换#xff0c;那么JavaScript和显卡之间的…二进制数组【ArrayBuffer对象、Type的Array视图和DataView视图】JavaScript操作二进制数据的一个接口。
这些接口原本是和WebGL有关【WebGL是浏览器与显卡之间的通信接口】为了满足JavaScript与显卡之间大量、实时数据交换那么JavaScript和显卡之间的数据通信必须是二进制。不能是传统的文本格式。
所谓的文本格式就是传递一个32位整数两端的JavaScript和显卡都要进行数据格式化这样非常耗时。
二进制数组就是想C语言那样直接操作字节把4个字节的32位整数以二进制的形式传给显卡这样脚本的性能大幅提升。
二进制数组有三类对象组成
ArrayBuffer对象表示内存中的一段二进制数据通过视图来进行操作。视图添加了数组接口这样就可以使用数组的方法来操作内存了。TypedArray视图有9种类型的视图例如Uint8Array数组视图、Int16Array数组视图、Float32Array数组视图。DataView视图可以自定义复合格式的视图或者自定义字节序。
总结ArrayBuffer对象是二进制数据、TypedArray视图用来读写简单类型的二进制数据、DataView视图用于读写复杂类型的二进制数据。
支持TypedArray视图的9种数据类型
Int81个字节长度8为带符号的整数Uint81个字节长度8位不带符号的整数Uint8C1个字节长度8位不带符号的整数【自动过滤溢出】Int162个字节长度16位带符号的整数Uint162个字节长度16位不带符号的整数Int324个字节长度32位带符号的整数Uint324个字节长度32位不带符号的整数Float324个字节长度32位浮点数Float648个字节长度64位浮点数
ArrayBuffer对象
ArrayBuffer对象是存储二进制数据的一段内存但是不能读和写。
ArrayBuffer是一个构造函数分配一段可以存储数据的连续内存区域。比如
let buffer new ArrayBuffer(32);这样就创建一段32字节的内存区域每一个字节默认值为0。
为了读写这段内存就需要指定视图比如DataView视图代码如下
let buffer new ArrayBuffer(32);
let dataView new DataView(buffer);打印dataView的结果如下
let x new Int16Array(buffer);
console.log(x)当两个视图对应同一段内存的时候一个视图的修改会影响到另一个视图。
ArrayBuffer.prototype.byteLength
ArrayBuffer实例的byteLength属性返回的是内存的字节长度。
ArrayBuffer.prototype.slice()内存分割 ArrayBuffer.isView()判断参数是否是ArrayBuffer的视图实例
TypedArray视图
TypedArray视图有9中类型
Int8Array:8位有符号整数长度为1个字节Uint8Array:8位无符号整数长度为1个字节Uint8ClampedArray:8位无符号整数长度为1个字节溢出处理不同Int16Array:16位有符号整数长度为2个字节Uint16Array:16位无符号整数长度为2个字节Int32Array:32位有符号整数长度为4个字节Uint32Array:32位无符号整数长度为4个字节Float32Array:32位浮点数长度为4个字节Float64Array:64位浮点数长度为8个字节。