一、Buffer对象
1、作用
是node提供的处理二进制数据的对象。是node的内置对象,在使用时不需要安装,可以直接使用。不需要require('buffer')
2、使用的原因
JavaScript处理字符串的功能非常强大。但在二进制数据处理方面能力很弱,因此node就内置了buffer对象专门处理二进制数据。Buffer是构造函数,可以使用new创建Buffer的对象,浏览器的v8引擎会为Buffer的对象分配内存空间,类似于数组
let buf = new Buffer(256) //256表示buf有256个单元,类似于数组,下标的范围在0-255之间
console.log(buf);
//强调:buf的每个单元存放的数据必须是0-255之间的整数值,即Buffer的每个单元就是一个字节
// bit 位
// Byte 字节
// 1024Byte = 1KB
// 1024KB = 1MB
// 1024MB = 1GB
3、Buffer可以和字符串进行互换
二、Buffer构造函数
1、给构造函数传递整数,表示分配多少个字节的存储空间
let bytes = new Buffer(5) //表示给bytes分配5个字节的存储空间
2、给构造函数传递数组:数组的成员必须是整数值
let bytes = new Buffer([0x10,0x48]) //将数组传递给Buffer构造函数
3.给构造函数传递字符串:默认的编码格式是utf8
let b1 = new Buffer('蜗牛学苑','utf8')
console.log(b1.toString());
六、Buffer常用函数
1、Buffer.isEncoding(字符集):参数字符集就是字符的编码格式(ASCII、utf8、base64).作用是判断Buffer的字符集是否是给定的字符集,如果是函数返回true,不是函数返回false
2、Buffer.isBuffer(buffer):参数是一个Buffer的对象,判断参数是否是一个Buffer的实例
3、Buffer.byteLength():返回字符串实际占有的字节长度
七、实例属性
1、length:表示Buffer对象的长度(单元个数)
八、实例方法:用对象名调用的方法
1、类的成员
(1)实例成员:
(2)类成员:静态成员,是提高类名直接访问,不属于某个具体的对象,而是类的所有对象共享的
class Student {
constructor(id,name){
Student.school = '蜗牛学院' //school是类成员(静态成员)
this.id = id
this.name = name
}
Student.setSchool = function(){ //类方法
}
show(){} //实例方法
}
let s1 = new Student(1,'A') //s1有自己的id和name
let s2 = new Student(2,'B')
2、Buffer的实例方法
(1)write(value,index):向Buffer对象中写入数据
参数value表示写入的值
参数index表示写入的位置。可以省略
* 使用Buffer时注意的问题:在创建Buffer对象时,node建议使用以下两个方法,而不建议使用new
(1)Buffer.alloc(number,fill,encoding):返回一个对象
参数number必须是整数,代表buffer的单元个数
参数fill:表示填充数据。默认值为0
参数encoding:若填充数据是字符串,用来指定字符集(编码格式),默认值是utf8
(2)Buffer.from(args1,args2):返回一个Buffer对象
参数args1:可以是字符串,也可以是数组
参数args2:若第一个参数是字符串,则用来指定字符集。
let b2 = Buffer.from([0x41,0x42,0x71]) //数组作为参数
console.log(b2.toString())
let b2 = Buffer.from('蜗牛学苑','utf8') //字符串作为参数
console.log(b2.toString())