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]}