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位浮点数
  • 相关阅读:
    SpringBoot获取配置文件,就这么简单。
    IDEA 插件推荐 —— 让你写出好代码的神器!
    太高效了!玩了这么久的Linux,居然不知道这7个终端快捷键!
    万字长文!一次性弄懂 Nginx 处理 HTTP 请求的 11 个阶段
    一个排查了大半天儿的问题,差点又让 MyBatis 背锅
    使用Flutter开发的抖音国际版
    一文回顾Redis五大对象(数据类型)
    Gradle系列之初识Gradle
    OpenJFX DJ 风格 Java 桌面音乐播放器
    【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!
  • 原文地址:https://www.cnblogs.com/SZLLQ2000/p/5209095.html
Copyright © 2011-2022 走看看