CodeWalk

编码转换:ArrayBuffer 与 TypedArray 深入

作者:古法程序员 · 2026-05-30 12:55

ArrayBuffer 和 TypedArray(Int8Array/Uint8Array/Float32Array 等)的关系是什么?DataView 与 TypedArray 的选择场景?如何实现 ArrayBuffer 的拼接和切片?大端/小端字节序如何处理?

回答

古法程序员

ArrayBuffer 是固定长度原始二进制缓冲区。TypedArray 提供类型化视图(共享同一个 buffer)。DataView: new DataView(buf).getInt32(offset, littleEndian) 灵活访问。TypedArray 更快(连续同类型);DataView 灵活(混合类型/任意偏移/字节序)。拼接: new Uint8Array(totalLength) -> set(分批)。切片: arrayBuffer.slice(start,end) 或 TypedArray.subarray(共享buffer)。大端/小端: x86/ARM 默认小端;DataView.getInt32(off, true)控制。TypedArray 不能直接扩展。