1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-29 05:42:20 +00:00

edit typedArray

This commit is contained in:
ruanyf 2015-11-03 15:22:55 +08:00
parent e9f7c5186a
commit 5f3f250332

View File

@ -1,6 +1,6 @@
# 二进制数组
二进制数组ArrayBuffer对象、TypedArray视图和DataView视图是JavaScript操作二进制数据的一个接口。这些对象早就存在属于独立的规格ES6将它们纳入了ECMAScript规格并且增加了新的方法。
二进制数组ArrayBuffer对象、TypedArray视图和DataView视图是JavaScript操作二进制数据的一个接口。这些对象早就存在属于独立的规格2011年2月发布ES6将它们纳入了ECMAScript规格并且增加了新的方法。
这个接口的原始设计目的与WebGL项目有关。所谓WebGL就是指浏览器与显卡之间的通信接口为了满足JavaScript与显卡之间大量的、实时的数据交换它们之间的数据通信必须是二进制的而不能是传统的文本格式。文本格式传递一个32位整数两端的JavaScript脚本与显卡都要进行格式转化将非常耗时。这时要是存在一种机制可以像C语言那样直接操作字节将4个字节的32位整数以二进制形式原封不动地送入显卡脚本的性能就会大幅提升。
@ -464,7 +464,7 @@ function str2ab(str) {
不同的视图类型,所能容纳的数值范围是确定的。超出这个范围,就会出现溢出。
TypedArray数组对于溢出采用的处理方法是求余值。正向溢出overflow等于,当前数据类型的最小值加上余值再减去1负向溢出underflow等于当前数据类型的最大值减去余值再加上1。
TypedArray数组对于溢出采用的处理方法是求余值。正向溢出overflow的含义是输入值大于当前数据类型的最大值,最后得到的值就等于当前数据类型的最小值加上余值再减去1负向溢出underflow等于当前数据类型的最大值减去余值再加上1。
```javascript
var uint8 = new Uint8Array(1);
@ -476,7 +476,7 @@ uint8[0] = -1;
uint8[0] // 255
```
上面例子中8位无符号整数的数值范围是0到255超出这个范围就是溢出。256相当于正向溢出1回到最小值0-1相当于负向溢出1回到最大值255
上面例子中8位无符号整数的数值范围是0到255超出这个范围就是溢出。256相当于正向溢出1即余值为1最后的值等于0`0 + 1 -1`-1相当于负向溢出1余值也为1最后的值等于255`255 - 1 + 1`
下面是8位带符号整数的例子。
@ -609,6 +609,22 @@ Float32Array.of(0.151, -8, 3.7)
// Float32Array [ 0.151, -8, 3.7 ]
```
下面三种方法都会生成同样一个TypedArray数组。
```javascript
// 方法一
let tarr = new Uint8Array([1,2,3]);
// 方法二
let tarr = Uint8Array.of(1,2,3);
// 方法三
let tarr = new Uint8Array(3);
tarr[0] = 0;
tarr[1] = 1;
tarr[2] = 2;
```
### TypedArray.from()
静态方法`from`接受一个可遍历的数据结构比如数组作为参数返回一个基于这个结构的TypedArray实例。
@ -883,7 +899,7 @@ reader.onload = function () {
};
```
下面以处理bmp文件为例。假定file变量是一个指向bmp文件的文件对象首先读取文件。
下面以处理bmp文件为例。假定`file`变量是一个指向bmp文件的文件对象首先读取文件。
```javascript
var reader = new FileReader();