Node.js — Buffer

43 阅读1分钟

Buffer 介绍

Buffer 中文译为"缓冲区",是一个类似于Array的对象,用于表示固定长度的字节序列

换句话说,Buffer 就是一段固定长度的内存空间,用于处理二进制数据

Buffer 特点
  1. Buffer大小固定且无法调整
  2. Buffer性能较好,可以直接对计算机内存进行操作
  3. 每个元素的大小为1字节(byte)

Buffer创建

Node.js中创建Buffer的方式主要有如下几种:

  1. Buffer.alloc
// 1.alloc
// 创建一个长度为10字节的buffer,相当于申请了10字节的内存空间,每个自己值为0
let buf = Buffer.alloc(10)
console.log(buf); //结果 <Buffer 00 00 00 00 00 00 00 00 00 00>
  1. Buffer.allocUnsafe
// 2.allocUnsafe
// 创建一个长度为10字节的buffer,buffer中可能存在旧值,可能会影响执行结果,所以叫unsafe
let buf2 = Buffer.allocUnsafe(10)
console.log(buf2); //结果 <Buffer 00 00 00 00 00 00 00 00 00 00>
  1. Buffer.from
// 3.from
//通过字符串创建
let buf3 = Buffer.from('hello')
console.log(buf3); //结果 <Buffer 68 65 6c 6c 6f>
//通过数组创建
let buf4 = Buffer.from([105,108,111,118])
console.log(buf4); //结果 <Buffer 68 65 6c 6c 6f>
Buffer 操作与注意点

1. Buffer 与字符串的转换

我们可以借助toString方法将Buffer转为字符串

// Buffer 与字符串的转换
let buf4 = Buffer.from([105,108,111,118])
console.log(buf4.toString()); //toString默认是按照utf-8进行转换的

2. Buffer的读写

Buffer可以通过[]的方式对数据进行处理

let buf4 = Buffer.from([105,108,111,118])
//读取
console.log(buf4[1]); 
//修改
buf4[1] = 1
console.log(buf4[1]); 

注意:

  1. 如果修改的值超过255,则超过8位数据会被舍弃
  2. 一个utf-8的字符一般占3个字节