Buffer 介绍
Buffer 中文译为"缓冲区",是一个类似于Array的对象,用于表示固定长度的字节序列
换句话说,Buffer 就是一段固定长度的内存空间,用于处理二进制数据
Buffer 特点
- Buffer大小固定且无法调整
- Buffer性能较好,可以直接对计算机内存进行操作
- 每个元素的大小为1字节(byte)
Buffer创建
Node.js中创建Buffer的方式主要有如下几种:
- 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>
- 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>
- 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]);
注意:
- 如果修改的值超过255,则超过8位数据会被舍弃
- 一个utf-8的字符一般占3个字节