• Typed Arrays in javascripts


    Typed Arrays(类型数组)这个概念,可能对很多人来说非常陌生,那么它是什么,又有什么用途呢?

    之前的问题

            Web应用程序变得越来越强大,例如新增了音视频处理、WebSocket等多个功能特性。毫无疑问,如果Javascript能够快速方便的操作原始二 进制数据会相当的有用。过去,我们必须要把原始数据当作字符串来处理,并且使用charCodeAt方法来从数据缓冲区中读取字节。

            但是这种方法需要多次转换数据(尤其在二进制数据不是字节格式的数据时,例如32位整数或者浮点数),所以非常慢而且容易出错。

            Javascript需要一种机制来更有效的访问原始的二进制数据,由此产生了类型数组。

    var x = new Uint8Array([1,0,0,0]);
    var a = x[0].toString()+x[1].toString()+x[2].toString()+x[3].toString();
    console.log(parseInt(a, 2));
    console.log(a.length);

    多个类型数组视图可以指向同一个arrayBuffer,采用不同的类型、不同的长度以及不同的位移。例如下面的代码:


    [html] // 创建一个8字节的ArrayBuffer 
    var b = new ArrayBuffer(8); 
     
    // 创建一个指向b的视图v1,采用Int32类型,开始于默认的字节索引0,直到缓冲区的末尾 
    var v1 = new Int32Array(b); 
     
    // 创建一个指向b的视图v2,采用Uint8类型,开始于字节索引2,直到缓冲区的末尾 
    var v2 = new Uint8Array(b, 2); 
     
    // 创建一个指向b的视图v3,采用Int16类型,开始于字节索引2,长度为2 
    var v3 = new Int16Array(b, 2, 2); 
          // 创建一个8字节的ArrayBuffer
          var b = new ArrayBuffer(8);

          // 创建一个指向b的视图v1,采用Int32类型,开始于默认的字节索引0,直到缓冲区的末尾
          var v1 = new Int32Array(b);

          // 创建一个指向b的视图v2,采用Uint8类型,开始于字节索引2,直到缓冲区的末尾
          var v2 = new Uint8Array(b, 2);

          // 创建一个指向b的视图v3,采用Int16类型,开始于字节索引2,长度为2
          var v3 = new Int16Array(b, 2, 2);

            上述代码里变量的数据结构如下所示。

    变量的数据结构
            类型数组包括以下几种类型:

    名称 大小(以字节为单位) 说明
    Int8Array 1 8位有符号整数
    Uint8Array 1 8位无符号整数
    Int16Array 2 16位有符号整数
    Uint16Array 2 16位无符号整数
    Int32Array 4 32位有符号整数
    Uint32Array 4 32位无符号整数
    Float32Array 4 32位浮点数
    Float64Array 8 64位浮点数
  • 相关阅读:
    NAT(NAPT)地址转换过程
    关于路由、AP、交换机的小总结
    交换机、集线器、路由器区别和作用
    系统调用与API的区别
    课程设计
    Python学习之format函数的使用
    等边三角形
    Hello 2018
    PyCharm idea clion webstorm phpstorm激活
    Educational Codeforces Round 35 (Rated for Div. 2)(ABC)
  • 原文地址:https://www.cnblogs.com/SZLLQ2000/p/5209095.html
Copyright © 2020-2023  润新知