JavaScript:二进制数组【笔记】

news2024/12/23 12:10:46

二进制数组【ArrayBuffer对象、Type的Array视图和DataView视图】JavaScript操作二进制数据的一个接口。

这些接口原本是和WebGL有关【WebGL是浏览器与显卡之间的通信接口】,为了满足JavaScript与显卡之间大量、实时数据交换,那么JavaScript和显卡之间的数据通信必须是二进制。不能是传统的文本格式。

所谓的文本格式,就是传递一个32位整数,两端的JavaScript和显卡都要进行数据格式化,这样非常耗时。

二进制数组,就是想C语言那样直接操作字节,把4个字节的32位整数以二进制的形式传给显卡,这样脚本的性能大幅提升。

二进制数组有三类对象组成:

  1. ArrayBuffer对象:表示内存中的一段二进制数据,通过视图来进行操作。视图添加了数组接口,这样就可以使用数组的方法来操作内存了。
  2. TypedArray视图:有9种类型的视图,例如:Uint8Array数组视图、Int16Array数组视图、Float32Array数组视图。
  3. DataView视图:可以自定义复合格式的视图或者自定义字节序。

总结:ArrayBuffer对象是二进制数据、TypedArray视图用来读写简单类型的二进制数据、DataView视图用于读写复杂类型的二进制数据。

支持TypedArray视图的9种数据类型:

  1. Int8,1个字节长度,8为带符号的整数;
  2. Uint8,1个字节长度,8位不带符号的整数;
  3. Uint8C,1个字节长度,8位不带符号的整数【自动过滤溢出】;
  4. Int16,2个字节长度,16位带符号的整数;
  5. Uint16,2个字节长度,16位不带符号的整数;
  6. Int32,4个字节长度,32位带符号的整数;
  7. Uint32,4个字节长度,32位不带符号的整数;
  8. Float32,4个字节长度,32位浮点数;
  9. Float64,8个字节长度,64位浮点数;

ArrayBuffer对象

ArrayBuffer对象是存储二进制数据的一段内存,但是不能读和写。

ArrayBuffer是一个构造函数,分配一段可以存储数据的连续内存区域。比如:

let  buffer = new ArrayBuffer(32);

这样就创建一段32字节的内存区域,每一个字节默认值为0。

为了读写这段内存,就需要指定视图,比如DataView视图,代码如下:

let buffer = new ArrayBuffer(32);
let dataView = new DataView(buffer);

打印dataView的结果如下:
在这里插入图片描述

let x = new Int16Array(buffer);
console.log(x)

在这里插入图片描述

当两个视图对应同一段内存的时候,一个视图的修改会影响到另一个视图。

ArrayBuffer.prototype.byteLength

ArrayBuffer实例的byteLength属性返回的是内存的字节长度。

ArrayBuffer.prototype.slice():内存分割;
ArrayBuffer.isView():判断参数是否是ArrayBuffer的视图实例;

TypedArray视图

TypedArray视图有9中类型:

  1. Int8Array:8位有符号整数,长度为1个字节;
  2. Uint8Array:8位无符号整数,长度为1个字节
  3. Uint8ClampedArray:8位无符号整数,长度为1个字节,溢出处理不同
  4. Int16Array:16位有符号整数,长度为2个字节
  5. Uint16Array:16位无符号整数,长度为2个字节
  6. Int32Array:32位有符号整数,长度为4个字节
  7. Uint32Array:32位无符号整数,长度为4个字节
  8. Float32Array:32位浮点数,长度为4个字节
  9. Float64Array:64位浮点数,长度为8个字节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1018229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

认识面向对象-PHP8知识详解

面向对象编程,也叫面向对象程序设计,是在面向过程程序设计的基础上发展而来的,它比面向过程编程具有更强的灵活性和扩展性。 它用类、对象、关系、属性等一系列东西来提高编程的效率,其主要的特性是可封装性、可继承性和多态性。…

2024届河南硕士暑期实习经验分享---招商银行篇

本期的实习经验分享,采访到了我的一位优秀的师弟,师弟于今年成功被郑州招商银行信息技术岗录取进行实习,下面他将使用第一人称的方式分享自己寻找实习过程中的一些经验、需要避的坑和在招商银行实习过程中的一些经历,为后续师弟师…

2023.9.11 关于传输层协议 UDP和TCP 详解

目录 UDP协议 TCP协议 TCP十大核心机制 确认应答 超时重传 连接管理(三次握手 四次挥手) 滑动窗口 流量控制 拥塞控制 延时应答 捎带应答 面向字节流 粘包问题 TCP 中的异常处理 经典面试题 对比 TCP 和 UDP 如何使用 UDP 实现可靠传…

l8-d19 广播与组播

一、广播 1.概念 数据包发送方式只有一个接受方,称为单播 如果同时发给局域网中的所有主机,称为广播 只有用户数据报(使用UDP协议)套接字才能广播 广播地址 一个网络内主机号全为1的IP地址为广播地址 发到该地址的数据包被所有的主机接收 255.25…

Linux学习第14天:Linux设备树(一):枝繁叶茂见晴天

本节笔记主要学习了Linux设备树相关知识点,由于内容较多,打算分两天进行总结。今天着重学习Linux设备树,主要包括前三节内容,分别是概念、格式和语法。 本节思维导图内容如下: 一、什么是设备树 设备树可以用一个图来进…

HJ61 放苹果

题目&#xff1a; HJ61 放苹果 题解&#xff1a;递归 f(m,n)表示将m个苹果放在n个盘子中所有的放法。 当n > m时&#xff0c;一定有盘子空着&#xff0c;等效于将m个苹果放到m个盘子中&#xff0c;即f(m,n) f(m,m)当 n < m时&#xff0c; 没有空盘子&#xff0c;那么…

LinkedList 源码分析

LinkedList 是一个基于双向链表实现的集合类。 LinkedList 插入和删除元素的时间复杂度 头部插入/删除&#xff1a;只需要修改头结点的指针即可完成插入/删除操作&#xff0c;因此时间复杂度为 O(1)。尾部插入/删除&#xff1a;只需要修改尾结点的指针即可完成插入/删除操作…

【玩玩Vue】通过vue-store实现枚举管理,用于下拉选项和中英文翻译等

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、store基础用法1.在src下新建store文件夹&#xff0c;在store下新建module文件夹2.在module下新建enums.js文件3.在store下新建getters.js…

Mybatis学习笔记3 在Web中应用Mybatis

Mybatis学习笔记2 增删改查及核心配置文件详解_biubiubiu0706的博客-CSDN博客 技术栈:HTMLServletMybatis 学习目标: 掌握mybatis在web应用中如何使用 Mybatis三大对对象的作用域和生命周期 关于Mybatis中三大对象的作用域和生命周期、 官网说明 ThreadLocal原理及使用 巩…

【古诗文网登录】

文章目录 古诗文网简介python登录 古诗文网简介 古诗文网登录界面 模拟登录两大难点 __VIEWSTATE、__VIEWSTATEGENERATOR两个动态参数验证码 python登录 1、解析登录界面&#xff0c;获取__VIEWSTATE、__VIEWSTATEGENERATOR参数2、获取登陆界面验证码图片&#xff0c;输入…

爬虫 — 自动化爬虫 Selenium

目录 一、介绍二、对比三、安装四、简单使用五、定位元素1、By.ID2、By.CLASS_NAME3、By.NAME4、By.TAG_NAM5、By.XPATH 六、操作元素1、在输入框输入内容并搜索2、打开网站搜索音乐并播放 七、Cookie 操作1、获取所有的 Cookie2、根据 Cookie 的 name 获取 Cookie3、删除某个 …

《低代码指南》——低代码+AI,驱动企业数字资产保值增值

各位嘉宾,大家上午好!非常荣幸能借助钛媒体数字价值峰会这个平台跟大家交流。 了解奥哲的朋友知道,奥哲是国内第一家官宣聚焦低代码领域,并且以低代码定位获得融资的数字化企业。 过去两三年,低代码得到了飞速发展,我在此想跟各位分享下我们在过去实践过程中的一些发现,…

Java“牵手”速卖通商品列表页数据采集+速卖通商品价格数据排序,速卖通API接口申请指南

速卖通是阿里巴巴旗下的面向国际市场打造的跨境电商平台&#xff0c;被称为国际版淘宝&#xff0c;速卖通面向海外买家客户&#xff0c;通过支付宝国际账户进行担保交易&#xff0c;并使用国际物流渠道运输发货&#xff0c;是全球第三大英文在线购物网站。 速卖通商品列表数据…

【资源监视器】设备占用,强制弹出移动硬盘

设备占用&#xff0c;强制弹出移动硬盘 任务管理器中找到资源监视器 资源监视器&#xff1a;找到CPU 输入磁盘&#xff1a;如H: , 点击旁边的刷新 结束句柄 右键

CorelDRAW 2023怎么把图片转化为手绘素描风 简单几步轻松搞定

CorelDRAW 2023是一款非常好用的设计类软件&#xff0c;软件拥有非常多强大又好用的功能&#xff0c;可以帮助设计师快速创造出想要的效果&#xff0c;今天我们就来给大家介绍一下CDR的“素描”艺术笔触。它可以帮助用户快速将普通的图片快速转换成类似素描的风格&#xff0c;在…

AMD GPU 内核驱动分析(二)-gpu_sched

AMDGPU驱动模块的依赖关系如下图,gpu_sched.ko位于GPU驱动架构的中间层&#xff0c;主要负责对应用发送下来的渲染和计算等命令进行调度&#xff1a; 编译gpu_sched.ko 模块源码位于linux-x.x.xx/drivers/gpu/drm/scheduler下&#xff0c;通过CONFIG_DRM_SCHED项配置编译。从M…

更新至2021年,互联网相关指标数据

更新至2021年&#xff0c;互联网相关指标数据 1、来源&#xff1a;国家统计J和各省NJ 2、指标&#xff1a;域名数、网站数、网页数、互联网宽带接入端口、互联网宽带接入用户、城市宽带接入用户、移动互联网用户、移动互联网接入流量、联网上网人数 3、范围&#xff1a;31省…

四、日志编写 —— TinyWebServer

日志编写 —— TinyWebServer 一、 前言 上期已经写完lock类的编写。这期是日志的编写。 对于日志需要弄懂几个基本概念才可以更好的理解和编写日志。 什么是日志&#xff1f;常用的日志级别有哪些&#xff1f;日志的基本格式是什么&#xff1f;异步日志类刷新缓冲区的作用同…

虚幻4学习笔记(12)操控导入的角色、动画蓝图、播放蒙太奇和打包、角色重定向

虚幻4学习笔记 操控导入的角色设置鼠标旋转关掉动态模糊 动画蓝图、播放蒙太奇和打包角色走路奔跑动画shift 奔跑F 跳舞移动打断 跳舞 打包角色重定向姿势调整解决跑步 腿分太开隐藏剑 B站UP谌嘉诚课程&#xff1a;https://www.bilibili.com/video/BV164411Y732 操控导入的角色…

FreeSWITCH 1.10.10 简单图形化界面10 - 鼎兴FXO网关SIP注册公网IPPBX落地

FreeSWITCH 1.10.10 简单图形化界面10 - 鼎兴FXO网关SIP注册公网IPPBX落地 0、 界面预览1、创建一个话务台2、创建PBX SIP中继并设置呼入权限3、设置呼出规则4、设置分机呼出权限5、设置FXO 网关相关信息6、设置FXO网关端口组呼入号码7、设置FXO网关呼叫路由&#xff08;呼入及…