zoukankan      html  css  js  c++  java
  • 类型化数组

    类型化数组是javascript操作(内存)二进制数据的一个接口。
    
    类型化数组是建立在ArrayBuffer对象的基础上的。它的作用是,分配一段可以存放数据的连续内存区域。
    
    
    var buf = new ArrayBuffer(32); //生成一段32字节的内存区域,即变量buf在内存中占了32字节大小
    
    ArrayBuffer对象的byteLength属性,返回所分配的内存区域的字节长度。
    
    buf.byteLength //32
    
    如果要分配的内存区域很大,有可能分配失败(因为没有那么多的连续空余内存),所以有必要检查是否分配成功。
    if (buffer.byteLength === n) {
      // 成功
    } else {
      // 失败
    }
    
    
    ArrayBuffer作为内存区域,可以存放多种类型的数据。不同数据有不同的存储方式,这就叫做“视图”。目前,JavaScript提供以下类型的视图
    Int8Array:8位有符号整数,长度1个字节。
    Uint8Array:8位无符号整数,长度1个字节。
    Int16Array:16位有符号整数,长度2个字节。
    Uint16Array:16位无符号整数,长度2个字节。
    Int32Array:32位有符号整数,长度4个字节。
    Uint32Array:32位无符号整数,长度4个字节。
    Float32Array:32位浮点数,长度4个字节。
    Float64Array:64位浮点数,长度8个字节。
    
    每一种视图都有一个BYTES_PER_ELEMENT常数,表示这种数据类型占据的字节数
    int8Array.BYTES_PER_ELEMENT // 1
    Int16Array.BYTES_PER_ELEMENT // 2
    
    生成视图有两种方法:
    1,在ArrayBuffer对象上生成
    // 创建一个8字节的ArrayBuffer
    var b = new ArrayBuffer(8);
    
    // 创建一个指向b的Int32视图,开始于字节0,直到缓冲区的末尾
    var v1 = new Int32Array(b);
    
    // 创建一个指向b的Uint8视图,开始于字节2,直到缓冲区的末尾
    var v2 = new Uint8Array(b, 2);
    
    // 创建一个指向b的Int16视图,开始于字节2,长度为2
    var v3 = new Int16Array(b, 2, 2);
    
    2,直接生成
    var v4 = new Int32Array(3); //创建一个数组长度为3的类型化数组
    v4.length // 3;
    v4.byteLength //12 变量v4占12字节的内存大小 ;一个32位数字占4个字节,该数组共有3个元素所以是4*3等于12

    原文出处:http://blog.csdn.net/lichwei1983/article/details/43893025

  • 相关阅读:
    μc/osⅡ简化版任务机制浅析
    用pygame学习初级python(一) 15.4.19
    openfire+asmack搭建的安卓即时通讯(六) 15.4.16
    openfire+asmack搭建的安卓即时通讯(五) 15.4.12
    openfire+asmack搭建的安卓即时通讯(四) 15.4.10
    openfire+asmack搭建的安卓即时通讯(三) 15.4.9
    openfire+asmack搭建的安卓即时通讯(二) 15.4.9
    openfire+asmack搭建的安卓即时通讯(一) 15.4.7
    无界非阻塞队列ConcurrentLinkedQueue核心源码浅析
    StampedLock主要API实现浅析
  • 原文地址:https://www.cnblogs.com/toward-the-sun/p/7682956.html
Copyright © 2011-2022 走看看