buffer(缓冲器)
1.概念
Buffer是一个类似于数组的对象,用于表示固定长度的字节序列。其本质是一段内存空间,专门用来处理二进制数据。
2.特点
- buffer长度固定并且无法调整。
- buffer性能好,可以直接对计算机内存进行操作。
- buffer中每个元素的大小为1字节。
3.创建
- alloc
buffer以字节为单位,每个字节是8个bit。
let buf1 = Buffer.alloc(10) //创建一个长度为10字节的buffer
- allocUnsafe
与alloc区别:alloc方法创建buffer时会对缓冲区域内的内容进行清零。
allocUnsafe不会对内容进行清零,所以使用allocUnsafe创建内存空间时会含有该空间以前存储的数据。
let buf2 = Buffer.allocUnsafe(10) //创建一个长度为10字节的buffer
- from
from方法可以将一个字符串或者数组转换为buffer。
//通过字符串创建buffer
let buf3=Buffer.from('hello');
console.log(buf3); // <Buffer 68 65 6c 6c 6f>
这里输出的数据是以十六进制的形式显示的。实际上缓冲器的存储原理是首先将字符串hello中的每个字符根据Unicode表中对应的十进制进行转换,再以二进制的形式存储在内存中,输出时转换为16进制。
//通过数组创建buffer
let buf_4=Buffer.from([111,222,333,444,555,666]);
console.log(buf_4) //<Buffer 6f de 4d bc 2b 9a>
原理同上。
4.转换为字符串
使用toString()方法
let buf_4=Buffer.from([105,108,111,118,101,121,111,117]);
console.log(buf_4.toString()) //输出iloveyou
5.读取和写入
通过下标进行对内容的读写
let buf_4=Buffer.from([105,108,111,118,101,121,111,117]);
console.log(buf_4[2]); //读取buffer里的第三个元素
buf_4[2]=110; //更改元素值
console.log(buf_4[2]); //110
console.log(buf_4.toString()) //ilnveyou