讲师中心 微信公众号
AI工具推荐 视频效率加速

怎样使用javascriptArrayBuffer_二进制数据如何操作?

千瑶吖_8387

千瑶吖_8387

发布时间:2025-12-19 14:04:02

|

923人浏览过

|

来源于php中文网

原创

ArrayBuffer 是 JavaScript 中操作二进制数据的基础内存容器,需配合 Uint8Array、Int32Array 或 DataView 等视图使用;其长度固定,创建后不可变,常用于文件读取、网络请求、Canvas 像素处理及 WebAssembly 等场景。

怎样使用javascriptarraybuffer_二进制数据如何操作?

JavaScript 中的 ArrayBuffer 是操作二进制数据的基础容器,它本身不提供读写能力,必须配合视图(如 Uint8Array、Int32Array、DataView)才能使用。核心逻辑是:先申请一段连续内存(ArrayBuffer),再用“视角”去解释这段内存里的字节。

创建和分配 ArrayBuffer

最常见的是通过构造函数指定字节数来创建:

  • const buf = new ArrayBuffer(1024); —— 创建 1KB 的空缓冲区
  • const buf = new ArrayBuffer(8); —— 适合存两个 32 位整数(每个占 4 字节)
  • 注意:ArrayBuffer 一旦创建,长度不可变;如需扩容,得新建并手动复制

用类型化数组(TypedArray)读写数据

这是最常用的方式,适合处理同类型、等间隔的数据,比如图像像素、音频采样:

  • const view = new Uint8Array(buf); —— 把缓冲区当 8 位无符号整数数组用
  • view[0] = 255; view[1] = 0; view[2] = 128; —— 直接赋值,自动写入对应字节
  • const ints = new Int32Array(buf); ints[0] = -1; —— 写一个 32 位有符号整数(占 4 字节)
  • ⚠️ 注意:不同视图共享同一段内存,改一个会影响另一个(例如改 Uint8Array[0] 可能影响 Int32Array[0] 的低字节)

用 DataView 精确控制字节序和偏移

当你需要混合类型、指定起始位置、或明确大小端时,DataView 更灵活:

立即学习“Java免费学习笔记(深入)”;

  • const dv = new DataView(buf);
  • dv.setUint8(0, 42); —— 从第 0 字节写一个 uint8
  • dv.setInt32(4, 123456, true); —— 从第 4 字节写一个 32 位整数,true 表示小端序
  • const val = dv.getFloat64(8, false); —— 从第 8 字节读一个大端双精度浮点数
  • 优点:可跨类型、可重叠、可控制 endianness;缺点:语法稍长,性能略低于 TypedArray(但通常可忽略)

与实际场景对接:文件、网络、Canvas

真实项目中,ArrayBuffer 很少手动构造,多来自外部数据源:

  • 读取文件:file.arrayBuffer() 返回 Promise
  • fetch 响应:response.arrayBuffer() 获取二进制响应体
  • Canvas 像素:ctx.getImageData(0,0,w,h).data.buffer 是 Uint8ClampedArray 的缓冲区
  • 传输优化:发送前可直接传 ArrayBuffer 给 WebSocket.send() 或 postMessage(),无需转 base64

基本上就这些。关键不是记住所有 API,而是理解「ArrayBuffer 是内存块,视图决定怎么读」这个模型。用熟了,处理图片、音视频、协议解析甚至 WebAssembly 就顺手多了。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

相关专题

更多
c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2278

2023.09.20

promise的用法
promise的用法

“promise” 是一种用于处理异步操作的编程概念,它可以用来表示一个异步操作的最终结果。Promise 对象有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。Promise的用法主要包括构造函数、实例方法(then、catch、finally)和状态转换。

4580

2023.10.12

html文本框类型介绍
html文本框类型介绍

html文本框类型有单行文本框、密码文本框、数字文本框、日期文本框、时间文本框、文件上传文本框、多行文本框等等。详细介绍:1、单行文本框是最常见的文本框类型,用于接受单行文本输入,用户可以在文本框中输入任意文本,例如用户名、密码、电子邮件地址等;2、密码文本框用于接受密码输入,用户在输入密码时,文本框中的内容会被隐藏,以保护用户的隐私;3、数字文本框等等。

4183

2023.10.12

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

4371

2023.10.23

canva可画使用技巧汇总
canva可画使用技巧汇总

本专题汇集了PHP中文网精心整理的Canva可画新手使用技巧大全,专为零基础用户打造。无论你是想制作精美海报、PPT还是社交媒体配图,这里都有从注册登录、模板搜索到AI辅助设计、导出分享的全流程保姆级教程。通过深入浅出的图文指南,帮助你快速跨越设计门槛,轻松掌握Canva可画的实用操作,让每个人都能成为设计达人!

264

2026.05.19

Golang WebSocket与实时通信开发
Golang WebSocket与实时通信开发

本专题系统讲解 Golang 在 WebSocket 开发中的应用,涵盖 WebSocket 协议、连接管理、消息推送、心跳机制、群聊功能与广播系统的实现。通过构建实际的聊天应用或实时数据推送系统,帮助开发者掌握 如何使用 Golang 构建高效、可靠的实时通信系统,提高并发处理与系统的可扩展性。

175

2025.12.22

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

416

2026.01.19

Python WebSocket实时通信与异步服务开发实践
Python WebSocket实时通信与异步服务开发实践

本专题聚焦 Python 在实时通信场景中的开发实践,系统讲解 WebSocket 协议原理、长连接管理、消息推送机制以及异步服务架构设计。内容包括客户端与服务端通信实现、连接稳定性优化、消息队列集成及高并发处理策略。通过完整案例,帮助开发者构建高效稳定的实时通信系统,适用于聊天应用、实时数据推送等场景。

1075

2026.03.18

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

60

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.3万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn