node基础_ Buffer(缓冲区)
buffer缓冲区:
buffer的结构和数组很像,操作的方法也和数组类似。
数组中不能存二进制的文件,而buffer就是专门用来存储二进制的数据。
使用buffer不需要引入模块,直接使用即可。
在buffer中存储的都是二进制数据,但是在显示时都是以16进制显示的。(gbk编码下1个汉字占两个字节,utf下占用3个字节)。
buffer数组中的每个元素的范围都是00-ff。即:0-255。因为255是11111111,所以256则操过了这个数值大小了。
计算机中,一个0或者一个1我们称为一个二进制位(比特位)
8个二进制位(bit)称为1个字节(Byte)。
buffer数组中的一个元素,占用的就是内存的1个字节。
buffer的大小一旦确定,则不能修改,buffer实际上是对底层内存的直接操作,也就是声明一片连续的内存空间给这个数组,如果进行长度改变,那么后面的连续的内存空间可能是已经被别的数组占用了。
从结构上看Buffer非常像一个数组,它的元素为16进制的两位数。
实际上一个元素就表示内存中的一个字节。
实际上Buffer中的内存不是通过JavaScript分配的,而是在底层通过C++申请的。
也就是我们可以直接通过Buffer来创建内存中的空间。
Buffer的操作
使用Buffer保存字符串
let str = "hello world";
let buf = Buffer.from(str , "utf-8");
创建指定大小的Buffer对象
let bufferArray2= Buffer.alloc(1024);
//赋值
bufferArray2[0]=0xaa;