Buffer(缓冲区)
1.js数组中不能存储文件的二进制数据,Buffer专门用来存储二进制数据
2.buff是 global的全局成员 不需要引入模块 直接使用
3.buffer中存储的是二进制数据 但是在显示(打印 输出时)的时候是以16进制显示
获得 实例化buffer对象的构造方法
/*
Buffer.from(array)
Buffer.from(string)
Buffer.alloc(size)
*/
let buf = Buffer.alloc(4);//4代表创建4个字节
console.log(buf);//<Buffer00,00,00,00>
//将字符串转成二进制数据后的实例对象
let hello = Buffer.from('hello','utf8');
console.log(hello);//<Buffer 68 65 6c 6c 6f>
let buffer_str = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);//[]字符的另一种表现方式
console.log(buffer_str.toString());// 输出结果 : buffer
Buffer类的静态方法
/*
Buffer.isEncoding(string)
Buffer.concat(array)
Buffer.byteLength(buffer实例)
Buffer.isBuffer(buffer实例)
*/
//判断字符集是否可用
console.log(Buffer.isEncoding('gbk'));//false
//拼接多个buffer
let world = Buffer.from('world');
let str = Buffer.concat([hello,world])
console.log(str);//<Buffer 68 65 6c 6c 6f 77 6f 72 6c 64>
console.log(str.toString());//helloworld
// 打印buffer字节数
console.log(Buffer.byteLength(str));//10
//判断是不是buffer实例
let jjkkdfljkl="";
console.log(Buffer.isBuffer(jjkkdfljkl));//false
实例对象的方法
/*
bufObj.toString();
bufObj.toJson()
bufObj.write()
bufObj.slice() //等于数组截取
*/
let bufObj1 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
// let json = bufObj1.toJson();// 不能直接调用,JSON.stringify自动调用才行
let json1 = JSON.stringify(bufObj1);//会将字符转成十进制
console.log(json1);//{"type":"Buffer","data":[1,2,3,4,5]}
let bufObj2 = Buffer.from('hello');
let json2 = JSON.stringify(bufObj2);//会将字符转成十进制
console.log(json2);//{"type":"Buffer","data":[104,101,108,108,111]}
let bufObj3 = Buffer.alloc(6);
bufObj3.write('GG',2);
console.log(bufObj3);//<Buffer 00 00 47 47 00 00>
console.log(bufObj3.toString());//GG
网友评论