首页 > web前端 > js教程 > 正文

JavaScript中的ArrayBuffer与类型化数组_javascript二进制数据

狼影
发布: 2025-11-05 13:22:03
原创
137人浏览过
ArrayBuffer是二进制数据存储容器,需通过类型化数组或DataView读写;类型化数组以固定格式解释数据,适合高效操作;DataView支持指定字节序,适用于跨平台数据处理。

javascript中的arraybuffer与类型化数组_javascript二进制数据

在JavaScript中处理二进制数据时,ArrayBuffer类型化数组(Typed Arrays) 是核心工具。它们让开发者可以高效地操作原始二进制数据,适用于图像处理、音频操作、WebSocket通信、文件读取(如File API)等场景。

ArrayBuffer:二进制数据的容器

ArrayBuffer 是一个通用的固定长度的二进制数据缓冲区。它本身不能直接读写,只能通过“视图”来访问其中的数据,最常见的视图就是类型化数组。

创建一个 ArrayBuffer 很简单:

const buffer = new ArrayBuffer(8); // 创建一个8字节的缓冲区
console.log(buffer.byteLength); // 8
登录后复制

这个 buffer 就像一块未格式化的内存区域,你不能直接知道里面存的是整数、浮点数还是其他内容,需要借助视图解释它。

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

类型化数组:ArrayBuffer 的视图

类型化数组是 ArrayBuffer 的“解释器”。它们将缓冲区中的字节按照特定的数据类型进行解读。常见的类型化数组包括:

  • Int8Array:8位有符号整数
  • Uint8Array:8位无符号整数
  • Int16Array:16位有符号整数
  • Uint16Array:16位无符号整数
  • Int32Array:32位有符号整数
  • Uint32Array:32位无符号整数
  • Float32Array:32位浮点数
  • Float64Array:64位浮点数

使用类型化数组访问 ArrayBuffer:

即构数智人
即构数智人

即构数智人是由即构科技推出的AI虚拟数字人视频创作平台,支持数字人形象定制、短视频创作、数字人直播等。

即构数智人 36
查看详情 即构数智人
const buffer = new ArrayBuffer(8);
const view = new Uint8Array(buffer); // 将buffer解释为8个无符号字节

view[0] = 42;
view[1] = 255;

console.log(view[0]); // 42
console.log(view[1]); // 255
登录后复制

多个类型化数组可以共享同一个 ArrayBuffer,从不同角度读写同一块内存:

const buffer = new ArrayBuffer(8);
const intView = new Int32Array(buffer);   // 每项4字节,共2项
const byteView = new Uint8Array(buffer);  // 每项1字节,共8项

intView[0] = 0x12345678;

console.log(byteView[0].toString(16)); // 78 (小端序)
console.log(byteView[1].toString(16)); // 56
console.log(byteView[2].toString(16)); // 34
console.log(byteView[3].toString(16)); // 12
登录后复制

这说明了字节序的影响——在小端系统中,低位字节存储在低地址。

DataView:更灵活的二进制读写方式

如果你需要精确控制字节序或混合读取不同类型的数据,DataView 是更好的选择。它提供了显式指定字节序的方法。

const buffer = new ArrayBuffer(8);
const dataView = new DataView(buffer);

dataView.setInt32(0, 0x12345678, true);  // 第0字节开始写入32位整数,true表示小端序
dataView.setFloat32(4, 3.14, false);     // 第4字节开始写入float,false表示大端序

console.log(dataView.getInt32(0, true).toString(16));  // 12345678
console.log(dataView.getFloat32(4, false).toFixed(2)); // 3.14
登录后复制

DataView 特别适合处理网络协议、自定义二进制格式等需要跨平台一致性的场景。

基本上就这些。ArrayBuffer 提供底层存储,类型化数组提供高效访问,DataView 提供灵活控制。掌握它们,你就拥有了在JavaScript中操作二进制数据的能力。

以上就是JavaScript中的ArrayBuffer与类型化数组_javascript二进制数据的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号