Buffer缓冲区
产生的原因
用户发给服务器的请求都是二进制数据,数据存储在Buffer中
服务器给客户端的响应中,除了数值,字符串等还有图像、音频、视频等,传统的array数组无法存储这些二进制的文件。
Buffer (缓冲区)
●从结构上看Buffer非常像一 个数组,操作方法也类似与数组
●数组无法存储这些写二进制的文件,buffer就是专门用来存储二进制数据,但是显示时都是以16进制,实际上一个元素就表示内存中的一个字节,范围是00-ff。
●实际上Buffer中的内存不是通过JavaScript分配的,而是在底层通过C+ +申请的。Buffer的大小一旦确定,则不能修改,是对底层内存的直接操作。
●也就是我们可以直接通过Buffer来创建内存中的空间。
Buffer.from(str)
讲一个字符串转换成buffer
var str = "hello 大世界";
var buf = Buffer.from(str);
console.log(buf.length);//占用内存的大小 15
console.log(str.length);//字符串的长度 9
Buffer.alloc(size)方法
创建一个指定大小的buffer,alloc()方法
/*
var buf2 = new Buffer(1024);//10字节的buffer
console.log(buf2.length);
*/
//buffer构造函数是不推荐使用的,会出现问题
var buf2 =Buffer.alloc(10);//创建了10字节的buffer,全部为00.可以通过索引来操作buffer中的元素
buf2[0] = 88;
buf2[1] = 255;
buf2[2] = 0xaa;//输出为170
//只要数字在控制台或者页面中输出的一定是10进制
buf2[3] = 255;
console.log(buf2[2]);
//想看16进制可以将它转换字符串
console.log(buf2[2].toString(16));
挨个显示buffer元素
for(var i=0;i<buf2.length;i++){
console.log(buf2[i]);
}
Buffer.allocUnsafe (size)方法
创建一个指定大小的buffer,但buffer中可能含有敏感数据,性能好
var buf3 =Buffer.allocUnsafe(10);
console.log(buf3);//有值,没有清理数据
将Buffer区的数据转化成文字
var buf4 = Buffer.from("我是一段文本数据");
console.log(buf4.toString());