Buffer的基本操作:
Buffer本质上就是字节数组,Buffer对象是Node处理二进制数据的一个接口。
它是Node原声提供的全局对象,可以直接使用,不需要require('buffer')。
1.实例化:(静态方法)
Buffer.from(array)
Buffer.from(string)
Buffer.alloc(size)
2.功能方法:(静态方法)
Buffer.isEncoding('编码类型(如UTF8)') 判断是否支持该编码
Buffer.isBuffer(obj) 判断是否为Buffer,传入的必须是一个对象
Buffer.byteLength() 返回制定编码的字节长度,默认UTF8
Buffer.concat() 将一组Buffer对象合并为一个Buffer对象
3.实例方法:
write()
slice()
toString()
toJson()
//实例化buf对象 let buf = Buffer.alloc(5); //分配五个字节,并都初始化为0 console.log(buf); //打印结果:<Buffer 00 00 00 00 00> //字符串 let buf = Buffer.from('buffer'); //分配的是一个字符串 let buf = Buffer.from('buffer','utf-8'); //两者打印结果一样 console.log(buf); //静态方法 console.log(Buffer.isEncoding('utf8')); //打印结果:true console.log(Buffer.isEncoding('gbk')); //打印结果:false let buf = Buffer.from('hello'); console.log(Buffer.isBuffer(buf)); //打印结果:true console.log(Buffer.isBuffer({str:'hi'})); //打印结果:false let buf = Buffer.from('中国','utf8'); console.log(Buffer.byteLength(buf)); //打印结果:6 let buf1 = Buffer.alloc(3); let buf2 = Buffer.alloc(5); let buf3 = Buffer.concat([buf1,buf2]); //拼接 console.log(Buffer.byteLength(buf3)); //打印结果:8 8个字节 let buf1 = Buffer.from('hello'); let buf2 = Buffer.from('hi'); let buf3 = Buffer.concat([buf1,buf2]); //拼接 console.log(Buffer.byteLength(buf3)); //打印结果:7 7个字节 console.log(buf3.toString()); //打印结果:hellohi //实例方法 let buf = Buffer.alloc(5); //第一个参数为要写入的字符串 //第二个参数为起始位置,默认为0 //第三个参数为要写入的长度,默认为字符串的长度减去起始位置 //第四个参数为编码,默认为'utf8' buf.write('hello',2,3); //<Buffer 00 00 68 65 6c> buf.write('hello'); //<Buffer 68 65 6c 6c 6f> let buf = Buffer.from('hello'); //切片: //第一个参数为起始位置,默认为0 //第二个参数为结束位置,默认为字符串的长度 let buf1 = buf.slice(2,3); console.log(buf1.toString()); //打印结果:l //toJSON方法不需要显示调用,当 const buf = Buffer.from('ahello'); const json = JSON.stringify(buf); console.log(json); //打印结果:{"type":"Buffer","data":[104,101,108,108,111]} 将字符串转化为十进制的数值 const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]); const json = JSON.stringify(buf); console.log(json); //打印结果:{"type":"Buffer","data":[1,2,3,4,5]}