发布时间:2026/7/30 3:57:12
HarmonyOS应用开发实战:猫猫大作战-ArrayBuffer 二进制缓冲区 前言ArrayBuffer是 JavaScript/ArkTS 中表示二进制数据缓冲区的对象。与普通 Array 不同ArrayBuffer 是固定长度的连续内存块适合存储二进制数据。在「猫猫大作战」中ArrayBuffer 用于文件读写、网络数据传输、和 TypedArray 配合实现棋盘的高效存储。一、ArrayBuffer 基础// 创建 40 字节的缓冲区5×8 棋盘constbuffernewArrayBuffer(40);// 获取字节长度console.info(buffer.byteLength);// 40// 通过 TypedArray 读写constviewnewInt8Array(buffer);view[0]1;// 设置第 1 个字节view[1]2;// 设置第 2 个字节console.info(view[0]);// 1二、文件读写中的应用import{fileIo}fromkit.CoreFileKit;// 从文件读取到 ArrayBufferasyncfunctionreadFileToBuffer(path:string):PromiseArrayBuffer{constfilefileIo.openSync(path,fileIo.OpenMode.READ_ONLY);conststatfileIo.statSync(path);constbuffernewArrayBuffer(stat.size);fileIo.readSync(file.fd,buffer);fileIo.closeSync(file);returnbuffer;}// 将 ArrayBuffer 写入文件asyncfunctionwriteBufferToFile(path:string,buffer:ArrayBuffer):Promisevoid{constfilefileIo.openSync(path,fileIo.OpenMode.CREATE|fileIo.OpenMode.WRITE_ONLY|fileIo.OpenMode.TRUNC);fileIo.writeSync(file.fd,buffer);fileIo.closeSync(file);}三、与 JSON 配合// ArrayBuffer → string → JSONconststrnewTextDecoder().decode(buffer);constdataJSON.parse(str);// JSON → string → ArrayBufferconstjsonStrJSON.stringify(data);constnewBuffernewTextEncoder().encode(jsonStr).bufferasArrayBuffer;四、TypedArray 视图constbuffernewArrayBuffer(40);// 不同的 TypedArray 视图constint8newInt8Array(buffer);// 40 个元素每个 1 字节constuint8newUint8Array(buffer);// 40 个元素constint16newInt16Array(buffer);// 20 个元素每个 2 字节constfloat32newFloat32Array(buffer);// 10 个元素每个 4 字节TypedArray元素大小元素个数取值范围Int8Array1 字节40-128~127Uint8Array1 字节400~255Int16Array2 字节20-32768~32767Float32Array4 字节10浮点数五、最佳实践定长数据结构用 ArrayBuffer如棋盘、网格配合 TypedArray 读写ArrayBuffer 不直接操作文件 I/O 用 ArrayBufferfileIo.readSync/writeSync 接收 ArrayBuffer注意字节序ArrayBuffer 使用小端序总结ArrayBuffer 是定长连续内存块配合 TypedArray 实现高效的二进制数据存储和文件 I/O。核心要点new ArrayBuffer(size)创建、TypedArray视图读写、 文件 I/O 的 buffer 参数。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源ArrayBuffer MDN 文档文件 I/O API第 144 篇taskpool第 150 篇TypedArray

相关新闻

2026/7/30 3:57:12

Python图像处理实战:从基础操作到智能分析项目开发

9 图像处理实战:从基础操作到完整项目开发在数字图像处理领域,无论是计算机视觉项目还是日常的图片编辑需求,掌握图像处理的核心技术都至关重要。本文将通过完整的实战案例,带你系统学习图像处理的全流程,从环境搭建、…

2026/7/30 3:52:11

STM32硬件SPI驱动3线LCD:从原理到DMA优化实践

1. 项目概述:为什么选择硬件SPI驱动3线LCD?在嵌入式显示项目中,驱动一块SPI接口的LCD屏是再常见不过的需求。很多开发者,尤其是刚接触STM32的朋友,可能会图省事直接用GPIO模拟SPI时序,也就是我们常说的“软…

2026/7/30 3:52:11

微软一天连发3篇之:打造自己的Harness原生Agents

就在前几天,抱抱脸 Daily Papers 上微软一口气挂出三篇论文——《LLMs Get Lost in Evolving User Intent》《Multi-Turn On-Policy Distillation with Prefix Replay》,以及本篇主角 OpenForge RL。[HarnessModel双引擎驱动的长程Agents最新综述] 现在的…

2026/7/30 5:12:15

从页面到驾驶舱:交互范式变迁的两种路径

从页面到驾驶舱:交互范式变迁的两种路径 2026-07-29 过去二十多年,软件界面遵循着一种底层逻辑:时间被冻结在一张张页面里,用户通过空间导航在功能之间移动。无论是打开一个App、进入一个菜单、还是找到某个按钮,本质上…

2026/7/30 5:12:15

STM32输入捕获实战:从原理到代码实现,精准测量信号时间

1. 项目概述:从“捕获”一个信号说起搞嵌入式开发,尤其是玩STM32的,定时器这玩意儿绝对是绕不开的核心外设。今天我们不聊那些基础的定时、PWM输出,来啃一块稍微硬点的骨头——输入捕获。这名字听起来有点抽象,其实干的…

2026/7/30 5:12:15

C++内存序:编译器重排序与硬件乱序的战场解析

1. 项目概述:内存序的战场在哪里?如果你写过C多线程程序,并且用过std::atomic,那你大概率见过std::memory_order_relaxed、std::memory_order_acquire这些枚举值。第一次接触时,很多人会感到困惑:我的代码逻…

2026/7/30 5:12:15

JESD204B链路配置参数详解:从核心公式到工程实践

1. 项目概述:为什么链路配置参数是JESD204B的“灵魂”搞高速数据转换器(ADC/DAC)和FPGA对接的工程师,对JESD204B这个协议肯定不陌生。它早已成为高速串行接口的事实标准,替代了老旧的并行LVDS接口。但很多刚接触的朋友…

2026/7/30 5:07:15

FastAPI 从入门到实战:构建高性能 Python Web API 的完整指南

如果你正在寻找一个既能快速上手,又能支撑高并发生产环境的 Python Web 框架,那么 FastAPI 很可能就是答案。传统框架如 Flask 虽然灵活但缺少类型检查,Django 功能全面却略显笨重,而 FastAPI 在易用性、性能和现代开发体验之间找…

2026/7/29 22:32:30

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/30 0:01:39

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:01:39

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/29 13:12:43

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…