Buffer基本操作

Node.js————Buffer的基本操作

Buffer的基本操作

Buffer对象是Node处理二进制数据的一个接口。它是Node原生提供的全局对象,可以直接使用,不需要require(‘buffer’)

实例化Buffer对象
  1. Buffer.alloc(size[, fill[, encoding]]):返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0
    1
    2
    3
    
    // 创建一个长度为 5、且用 0 填充的 Buffer。
    let buf = Buffer.alloc(5)
    console.log(buf)//结果:<Buffer 00 00 00 00 00>
    
  2. Bufffer.from(string[, encoding]): 返回一个被 string 的值初始化的新的 Buffer 实例
    1
    2
    
    let buf = Buffer.from('hello')
    console.log(buf)//结果:<Buffer 68 65 6c 6c 6f>
    
  3. Bufffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)
    1
    2
    3
    
    //创建一个新的包含utf-8字节的缓冲区
    const buf = new Buffer([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);
    console.log(buf)//结果:buffer
    
功能方法
  1. Buffer.isEncoding():判断是否支持该编码,如果支持返回true,否则返回false

    目前支持的编码:’ascii’,’utf8’,’utf16le’,’ucs2’,’base64’,’latin1’,’binary’,’hex’

  2. Buffer.isBuffer():判断是否为Buffer,如果是返回true,否则返回false
  3. Buffer.byteLength():返回指定编码的字节长度,默认utf-8
    1
    2
    
    let buf = Buffer.from('中国')
    console.log(Buffer.byteLength(buf))//结果:6 
    
  4. Buffer.concat():将一组Buffer对象合并为一个Buffer对象
    1
    2
    3
    4
    
    let buf1 = Buffer.from('Tom and')
    let buf2 = Buffer.from('Jerry')
    let buf3 = Buffer.concat([buf1, buf2])
    console.log(buf3.toString())//结果:Tom and Jerry
    
实例方法
  1. buf.write(string[, offset[, length]][, encoding]):向buffer对象写入内容

    可选参数:
    offset:从哪个位置开始写,默认是0
    length:写入多少个字节,默认是buf.length
    encoding:编码类型,默认是’utf8’

    1
    2
    3
    
    let buf = Buffer.alloc(5)
    buf.write('hello')
    console.log(buf)//结果:<Buffer 68 65 6c 6c 6f>
    
  2. buf.slice([start[, end]]):截取新的buffer对象

    可选参数:
    start:新 Buffer 开始的位置。默认值: 0
    end:新 Buffer 结束的位置(不包含)。默认值: buf.length。

    1
    2
    3
    
    let buf = Buffer.from('hello')
    let buf1 = buf.slice(2,4)
    console.log(buf1)//结果:ll
    
  3. buf.toString([encoding[, start[, end]]]):把buffer对象转成字符串
    1
    2
    
    let buf = Buffer.from('hello')
    console.log(buf.toString())//结果:hello
    
  4. buf.toJson([encoding[, start[, end]]]):把buffer对象转成json形式的字符串(toJson方法不需要显式调用,当JSON.stringify方法调用的时候会自动调用toJSON方法)
    1
    2
    3
    
    let buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
    let json = JSON.stringify(buf);
    console.log(json);// 结果: {"type":"Buffer","data":[1,2,3,4,5]}
    


-->