Node.js——Buffer

Buffer

1、创建Buffer对象

在Node.js中,Buffer类是一个可以在任何模块中被利用的全局类,不需要为该类的使用而加载任何模块。

1.1、Buffer.from()

js 复制代码
// 从字符串创建
const buf1 = Buffer.from('Hello');

// 从数组
const buf2 = Buffer.from([1, 2, 3]);

// 从另一个 Buffer
const buf3 = Buffer.from(buf1);

1.2、Buffer.alloc()

js 复制代码
//安全,推荐
const buf = Buffer.alloc(10); // 10 字节,自动清零

1.3、Buffer.allocUnsafe()

js 复制代码
//快但不安全
const buf = Buffer.allocUnsafe(10); // 可能包含旧数据

2、核心属性与方法

2.1、常用属性

js 复制代码
buf.length      // 字节长度
buf[index]      // 访问某个字节(0~255)
js 复制代码
const buf = Buffer.from('ABC');
console.log(buf[0]); // 65 (A)

2.2、写入数据

js 复制代码
buf.write(string, offset, length, encoding)
js 复制代码
const buf = Buffer.alloc(10);
buf.write('Hello', 0, 5, 'utf8');

2.3、读取数据

js 复制代码
buf.toString(encoding, start, end)
js 复制代码
buf.toString();          // 'Hello'
buf.toString('hex');     // 十六进制
buf.toString('base64');  // Base64

2.4、复制与切片

js 复制代码
//会共享内存
const buf = Buffer.from('abcdef');
const slice = buf.slice(0, 3);

slice[0] = 100;
console.log(buf.toString()); // 已修改原 buffer
js 复制代码
//更安全
const target = Buffer.alloc(3);
buf.copy(target, 0, 0, 3);

3、编码机制

Node.js 默认使用 UTF-8

js 复制代码
Buffer.from('中文', 'utf8')
Buffer.from('中文', 'hex') // 错误

常见编码:

  • utf8
  • ascii
  • latin1
  • hex
  • base64

4、实际应用

4.1、文件读写

js 复制代码
const fs = require('fs');

const data = fs.readFileSync('./image.png');
console.log(data instanceof Buffer); // true

4.2、网络请求

js 复制代码
http.createServer((req, res) => {
  let chunks = [];
  req.on('data', chunk => chunks.push(chunk));
  req.on('end', () => {
    const body = Buffer.concat(chunks);
  });
});

4.3、加密/哈希

js 复制代码
const crypto = require('crypto');

const hash = crypto.createHash('sha256');
hash.update(Buffer.from('hello'));
console.log(hash.digest('hex'));
相关推荐
hoLzwEge1 天前
pnpm vs npm:新一代包管理器的范式革命
前端框架·node.js
麻辣凉茶1 天前
给阿嬤一封来自云端的信(上)
前端·node.js
codingWhat2 天前
能效平台设计方案(打通gitlab和飞书)
后端·node.js·koa
见过夏天4 天前
Node.js 常用命令全攻略
node.js
前端双越老师4 天前
我从 0 开发的 AI Agent 智语项目发布了
前端·node.js·agent
kyriewen5 天前
2026 年了,还在用 Node.js?Bun 迁移实战:20 分钟搞定,附踩坑记录
前端·javascript·node.js
donecoding5 天前
3 条命令搞定闭环 Monorepo:Lerna 版本管理 + 拓扑构建 + 自定义分发
前端·前端框架·node.js
Flynt6 天前
npm v12 来了:allowScripts 默认关闭,我的项目差点跑不起来
安全·npm·node.js
叫我Paul就好7 天前
尝试 Node 搭建后端-开发框架
node.js
风止何安啊9 天前
网课倍速痛点解决:一套前端代码实现自由控速播放器
前端·javascript·node.js