1.什么是Buffer
Buffer为缓冲区,是一个类似Array的对象,用于表示固定长度的字节序列。简而言之,就是有固定长度的内存空间,用于处理二进制数据
2.特点
- 大小固定无法调整
- 可直接对计算机内存进行操作
- 每个元素的大小为1字节(byte)
3.Buffer的创建
- alloc 对每个二进制位清0
- allocUnsafe 不会对旧的数据做清空,仍然保留旧的数据
- from 每个字符都会转化成unicode中的码表数字,然后转成二进制存到Buffer中
let buf = Buffer.alloc(10);
//console.log(buf);
//<Buffer 00 00 00 00 00 00 00 00 00 00>
let buf2 = Buffer.allocUnsafe(2);
//console.log(buf2);
//2 <Buffer 00 00>;10 <Buffer 98 0a 8f bd 47 02 00 00 b8 0b>
let buf3= Buffer.from('hello');
console.log(buf3);
//<Buffer 68 65 6c 6c 6f>
4.Buffer与字符串的转换
借助toString()将Buffer转成字符串,默认方式是按照utf-8编码方式进行转换的
let buf4= Buffer.from([105,108,111,118,101,121,111,117]);
console.log(buf4.toString());//iloveyou
5.Buffer读写
Buffer可以直接通过[ ]的方式对数据进行处理。
let buf3= Buffer.from('hello');
console.log(buf3);//<Buffer 68 65 6c 6c 6f>
buf3[0] = 95;
console.log(buf3);//<Buffer 5f 65 6c 6c 6f>
console.log(buf3.toString());//_ello
如果修改的数值超过255,则超过8位数据会被舍弃。一个utf-8的字符一般占3个字节。
let buf3= Buffer.from('hello');
buf3[0] = 361;//舍弃高位 0001 0110 1001 =>0110 1001
console.log(buf3);//<Buffer 69 65 6c 6c 6f>
console.log(buf3.toString());//ello
let buf5= Buffer.from('你好');
console.log(buf5);//<Buffer e4 bd a0 e5 a5 bd></Buffer>