登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
[JS] ArrayBuffer、DataView和TypedArray
[JS] ArrayBuffer、DataView和TypedArray
[ 复制链接 ]
固拆棚
2025-6-6 16:25:07
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
JavaScript 中数组元素的数据类型是不固定的,number 类型可以是整数也可以是浮点数。这种性质与其它常见语言中的定型数组很不一样,导致不同语言编写的程序在交换数据的时候,需要花费很多时间在数据转换上。
ECMAScript 后来引入了定型数组 TypedArray。TypedArray并不是一个实际存在的数据类型,而是一系列定型数组类型的统称,它包含了 Int8Array、Uint8Array、Int16Array、Uint16Array、Float32Array等等。
这些定型数组只是一种“视图”,通过一种指定的方式解读内存中的二进制数据。
ArrayBuffer
在 JavaScript 中,可以通过 ArrayBuffer 预分配内存。
const buffer = new ArrayBuffer(16); // 分配 16 个字节
复制代码
ArrayBuffer 在分配之后就不能再调整大小,可以通过 slice 方法切片出小 buffer。
ArrayBuffer 的粒度为字节 byte,不是比特 bit。
ArrayBuffer 不能直接读写,要通过视图读写。视图指的是 DataView 或者 TypedArray。
ArrayBuffer 存储的是二进制,只是一堆数据,但是数据表达了什么信息是未定义的。我们需要一种“解读方式”,按照一定的规定,才能解读出信息。不同的解读方式可以解读出不同的信息。这里的解读方式就是视图,也就是 DataView 或者 TypedArray。
如下图:
TypedArray
定型数组用于指定一种方式来读写一块buffer。
常见的类型有:
ElementType字节说明等价的C类型Int818位有符号整数signed charUint818位无符号整数unsigned charInt16216位有符号整数shortUint16216位无符号整数unsigned shortInt32432位有符号整数intUint32432位无符号整数unsigned intFloat32432位IEEE-754浮点数floatFloat64864位IEEE-754浮点数double创建定型数组的时候,可以指定一个 ArrayBuffer 对象,那么定型数组实例会基于已存在的内存空间创建。
如果不指定已有的 ArrayBuffer 对象,则需要指定定型数组的长度,会自动在内存中分配内部数组缓冲区。
DataView
TypedArray是
定型
数组,在指定类型之后,就只能以固定大小的“窗口”来观察二进制读出一个数字来。
而 DataView 是一种更灵活的 buffer 视图,它可以通过指定偏移量和 elementType 在 buffer 中的任意位置读写一块数据。
它的特点有:
必须指定 ArrayBuffer 实例才能创建 DataView 实例。
可以指定字节序。
读写操作超出边界时,会报错 RangeError。
应用场景
ArrayBuffer 的关键字是
二进制
、
通信
。
常见的应用场景如下
:
处理二进制文件
: 读取、修改、生成二进制文件(如图像、音频、视频等)。
WebSocket 数据传输
: 传输二进制数据,如视频流、音频数据等。
WebGL 与图形处理
: 存储和传递图形数据到 GPU,处理顶点、颜色值等。
音频处理
: 生成或修改音频数据,通过 Web Audio API 进行处理。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
JS
ArrayBuffer
DataView
TypedArray
相关帖子
Electron.js 详解、应用场景及完整案例
最新常用的js跳转代码
标题转码JS代码
JS框架代码
引用调用JS代码
自动跳转的js代码
很简洁的JS框架代码
屏蔽PC端的JS框架
屏蔽pc端JS调用跳转
JS框架脚本
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
Electron.js 详解、应用场景及完整案例
3
709
甘子萱
2025-12-08
代码
最新常用的js跳转代码
0
16
新程序
2025-12-11
代码
标题转码JS代码
1
23
新程序
2025-12-11
代码
JS框架代码
0
22
新程序
2025-12-11
代码
引用调用JS代码
0
18
新程序
2025-12-11
代码
自动跳转的js代码
0
19
新程序
2025-12-11
代码
很简洁的JS框架代码
1
17
新程序
2025-12-11
代码
屏蔽PC端的JS框架
0
22
新程序
2025-12-11
代码
屏蔽pc端JS调用跳转
1
15
新程序
2025-12-11
代码
JS框架脚本
0
17
新程序
2025-12-11
回复
(7)
盗衍
2025-10-11 00:42:58
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
这个好,看起来很实用
孟清妍
2025-11-2 14:42:05
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
求几少
2025-11-14 06:11:58
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
益竹月
2025-11-28 03:01:01
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,试用一下
嫁蝇
2025-12-3 16:13:21
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
yyds。多谢分享
届表
2025-12-5 01:54:18
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
懂技术并乐意极积无私分享的人越来越少。珍惜
吁寂
前天 06:18
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个好,看起来很实用
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
固拆棚
前天 06:18
关注
0
粉丝关注
22
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845357
3934307807
991123
4
xiangqian
638210
5
韶又彤
9998
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
686
16.结构型 - 享元模式 (Flyweight Pattern)
359
复健笔记 - Pascal酒吧的爆破
603
[Linux] 手写轻量C++函数性能探查器:CPU占
945
关于linux编译c语言文件的一些错误问题
521
推荐一种并发线程中资源同步常用方法
817
【节点】[Adjustment-ReplaceColor节点]原
663
Linux DMA开发指南(一)
207
数字电路模拟程序&课堂测验Blog
562
ROS2核心概念之动作
681
[dx12显示图片] ImGui Learn Data Day 3
615
一张图看懂AI Agent的6种模式—MAS
930
.NET 10 网络堆栈深度架构解析:HTTP/3、性
925
【有手就行】LoRA:用你自己的数据来微调大
908
sqlilab —— 32关卡
423
.NET周刊【11月第3期 2025-11-16】
913
软件逆向加密视频专用播放器是如何检测到用
362
爬虫专栏:破解网站检测selenium反爬——“
837
开源项目分享:Gitee热榜项目 2025年12月第
50
意识的自反性:知者与作者之惑
687
docker学习笔记