Buffer(缓冲区)
- Buffer的数据结构和数组很像,操作的方法也和数组类似 。
- 因为数组中不能存储二进制的文件,所以Buffer就是专门来存储二进制数据的。
- 使用Buffer时不需要引入模块,直接使用即可。
- 在Buffer中存储的都是二进制数据,但是在显示时都是以十六进制的形式表现。
var str = "surprise mdf";
//将一个字符串保存到 Buffer 中
var buf = Buffer.from(str);
console.log(buf);
console.log(buf.length); //获取占用内存的大小
console.log(str.length); //获取字符串的长度
Buffer中的一个元素,占用内存的一个字节:
## 创建一个指定大小的 Buffer(构造函数创建已弃用,避免使用)
Buffer 的大小一旦确定,则不能修改(直接修改底层内存)
var buf2 = new Buffer(10);//创建一个10字节的 Buffer
console.log(buf2.length); //10
var buf2 = Buffer.alloc(10); //10 分配10字节空间
//通过索引来操作Buffer中的元素
buf2[0] = 88;
buf2[1] = 255;
buf2[2] = 0xaa;//只要数字在控制台或者页面输出一定是10进制
buf2[3] = 555;
//转换为二进制为1000101011 , 取后八位为00101011,结果为2b
buf2[10] = 15; //超出最大索引,不显示
console.log(buf2);
console.log(buf2[2]);//结果为170
console.log(buf[2].toString(16));//结果为aa
运行结果:
var buf3 = Buffer.allocUnsafe(10);
console.log(buf3);
Buffer.allocUnsafe(size) 性能比 Buffer.alloc(size)好,但是有可能会泄露数据,所以一般还是用后者。
buf.toString()
可以将缓冲区中的数据转换为字符串