目录
一.概述
- Buffer是一个类似于Array的对象,用于表示固定长度的字节序列。
- 本质就是一段固定长度的内存空间,用于处理二进制数据。
二.特点
- Buffer大小固定无法调整
- Buffer性能较好,可以直接对计算机内存进行操作
- 每个元素的大小为1字节
三.创建buffer的方式:
1.alloc
//创建一个10字节的buffer
let buf=Buffer.alloc(10);
console.log(buf);
由结果可以看出,alloc这种方法创建的buffer创建的二进制位,每一位都会归0。2
2.allocUnsafe
Unsafe中文“不安全”,(allocUnsafe所创建的Buffer其中可能会包含旧的内存数据?)。
因为内存空间是可以复用的,且allocUnsafe并不会对旧的数据做一个清空。所以,该方法创建buffre比alloc速度更快。
//创建一个10字节的buffer
let buf_2=Buffer.allocUnsafe(10);
console.log(buf_2);
结果上同。
3.from
let buf_3=Buffer.from('hello');
console.log(buf_3);
其结果为字母对应的unicode编码(10进制),再将其转换成16进制。
也能将数组转成buffer
let buf_4=Buffer.from([105,108,111,118]);
console.log(buf_4);
转化中,数组中的数字会转成16进制存到Buffer当中。
四.buffer操作
1.buffer与字符串的转换
在转换字符串时,默认采用utf-8编码方式做的字符串转换。
//buffer
let buf_4=Buffer.from([105,108,111,118]);
console.log(buf_4.toString());
运行结果:
2.Buffer的读写
取第一个元素h所保存的数据,获取方式
let buf=Buffer.from('hello');
console.log(buf[0]);
所得结果为104(十进制)
若要想查看其二进制数字,则
let buf=Buffer.from('hello');
console.log(buf[0].toString(2));
注:该方法的toString()是进行数字的进制转换的
buffer的
四.注意事项
1.溢出
buffer的二进制位所能存储的最大数字为255,对应的二进制数为11111111。
let buf=Buffer.from('hello');
buf[0]=361;//会发生溢出,舍弃高位的数字 0001 0110 1001==>0110 1001
console.log(buf);
2.中文
let buf=Buffer.from('你好');
console.log(buf);
结果显示6个字节,并不是2个,因为这两个中文是utf-8的中文,一个utf-8的中文占3个字节。