zoukankan      html  css  js  c++  java
  • 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位浮点数
  • 相关阅读:
    Entity Framework Core 2.0 新特性
    asp.net core部署时自定义监听端口,提高部署的灵活性
    asp.net core使用jexus部署在linux无法正确 获取远程ip的解决办法
    使用xshell连接服务器,数字键盘无法使用解决办法
    使用Jexus 5.8.2在Centos下部署运行Asp.net core
    【DevOps】DevOps成功的八大炫酷工具
    【Network】Calico, Flannel, Weave and Docker Overlay Network 各种网络模型之间的区别
    【Network】UDP 大包怎么发? MTU怎么设置?
    【Network】高性能 UDP 应该怎么做?
    【Network】golang 容器项目 flannel/UDP相关资料
  • 原文地址:https://www.cnblogs.com/SZLLQ2000/p/5209095.html
Copyright © 2011-2022 走看看