一、Buffer对象
(缓冲区对象)上传下载要用
1. 作用:是Node提供的处理二进制数据的对象。是node的内置对象,在使用时不需要安装可以直接使用,不需要require(‘buffer’)
2. 使用的原因:JavaScript处理字符串的功能非常强大,但在二进制数据处理方面能力很弱。因此node就内置了Buffer对象专门处理二进制数据。Buffer是构造函数,可以使用new创建Buffer的对象,浏览器的v8引擎会为Buffer的对象分配内存空间,类似于数组。
let buf = new Buffer(259)//259表示buf有258个单元,类似于数组,下标范围0-258
console.log(buf)
// for (let i = 0; i < buf.length; i++) {
// console.log(buf[i])
// }
let end = buf.slice(240,256)
console.log(end)
buf[0]=125
console.log(buf)
强调:buf的每个单元存放的数据必须是0~255之间的整数值。即Buffer的每个单元就是一个字节 Byte:字节
1024Byte ==> 1KB
1024KB ==> 1MB
1024MB ==> 1GB
1024GB ==> 1TB
3. Buffer对象可以和字符串进行互换
二、Buffer构造函数
1. 给构造函数传递整数:表示分配多少个字节的存储空间
let bytes = new Buffer(5) //表示给bytes分配5个字节的存储空间
2、给构造函数传递数组:数组的成员必须是整数值
let bytes = new Buffer([0x48,0x65,0x6c,0x6c,0x6f])//将数组传递给Buffer
console.log(bytes.toString())
3. 给构造函数传递字符串:默认的编码格式是utf8
let b1 = new Buffer("白桦林",'utf8')//默认utf8,utf8识别中文,acsii不识别中文
console.log(b1)//<Buffer e7 99 bd e6 a1 a6 e6 9e 97>
console.log(b1.toString())//白桦林
三、Buffer常用的函数
可以用类名(Buffer)直接访问的方法,就是静态成员
1. Buffer.isEncoding(字符集):参数’字符集’就是字符的编码格式(ASCII、utf8、base64)。作用是判断Buffer的字符集是否是给定的字符集,如果是函数返回true,不是函数返回false
console.log(Buffer.isEncoding('ascii'));//true
console.log(Buffer.isEncoding('gb2312'));//false
2. Buffer.isBuffer( buffer ):参数是一个Buffer的对象,判断参数是否是一个Buffer的实例
let b2 = Buffer.from("白桦林啊",'utf8')
console.log(Buffer.isBuffer(b2));//true
let date = new Date()
console.log(Buffer.isBuffer(date));//false
3. Buffer.byteLength( buffer ):返回字符串实际占有字节长度
let b2 = Buffer.from("白桦林啊",'utf8')//一个汉字占3个字符
console.log(Buffer.byteLength(b2))//<Buffer e7 99 bd e6 a1 a6 e6 9e 97>
四、实例属性
let b3 = Buffer.from('茶卡盐湖','utf8') //字符串作为参数
console.log(b3)//<Buffer e8 8c b6 e5 8d a1 e7 9b 90 e6 b9 96>
console.log(b3.length)//12
五、实例方法
用对象名调用的方法
(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的实例方法
write(value,index):向Buffer对象中写入数据
参数value:表示写入的值
参数index:表示写入的位置。可以省略
let bytes = Buffer.alloc(9)
bytes.write('中')
bytes.write('国',6)
bytes.write('人',3)
console.log(bytes.toString())//中人国
使用Buffer时注意的问题:在创建Buffer对象时,node建议使用以下两个方法,而不建议使用new
(1)Buffer.alloc(number,fill,encoding),返回一个Buffer对象
参数number:必须是整数,代表buffer的单元个数
参数fill:表示填充数据。默认值为0
参数encoding:若填充数据是字符串,用来指定字符集(编码格式),默认值是utf8
let bytes = Buffer.alloc(5,'A')//5个单元
console.log(bytes)//<Buffer 41 41 41 41 41>
(2)Buffer.from(args1,args2),返回一个Buffer对象
参数args1:可以是字符串,也可以是数组
参数args2:若第一个参数是字符串,则用来指定字符集。
let b2 = Buffer.from([0x41,0x42,0x71]) //数组作为参数
console.log(b2.toString())//ABq
let b3 = Buffer.from('茶卡盐湖','utf8') //字符串作为参数
console.log(b2.toString())//茶卡盐湖
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79767.html