首页 > 解决方案 > Node.js - 缓冲区与 Uint8Array

问题描述

在 fs 模块的文档1中,我们可以阅读(对于 writeFile 方法):

const data = new Uint8Array(Buffer.from('Hello Node.js'));

在同一文档2中说:

随着 TypedArray 现在可用,Buffer 类以更优化且适合 Node.js 的方式实现 Uint8Array API。

所以如果 Buffer 类实现了 Unint8Array,你能告诉我为什么我们需要从 Buffer 转换为 Unint8Array 吗?

标签: javascriptnode.jsbufferuint8array

解决方案


Uint8Array 是一个通用的字节数组,在 nodejs 和浏览器中都可用。Buffer 是 Uint8Array 的子类,仅在 nodejs 中可用(出于历史原因)。两者都主要用于处理二进制(字节)数据。

从历史上看,当 nodejs 刚出现时,通用的 Uint8Arrays 并不存在,因此它必须发明自己的“Buffer”类型来处理二进制数据。在 es6 引入通用 Uint8Arrays 之后,nodejs(4.0 版之后)决定将 Buffer 从一个单独的数据类型 -> Uint8Array 的子类迁移过来(尝试使其与 Uint8Array 更加浏览器兼容)。

https://www.quora.com/What-is-the-relationship-between-a-Buffer-and-an-Uint8Array-in-Node-js


推荐阅读