代码之家  ›  专栏  ›  技术社区  ›  SSpoke

删除Buffer node.js前面的元素

  •  0
  • SSpoke  · 技术社区  · 7 年前

    我知道有一个函数叫做 slice() 但我在找 splice() 这个函数不存在,我该怎么做呢?

    var buffer = new Buffer("090001060001020304090000060001020304", "hex");
    var packetLength = buffer.readUInt16LE(0)
    console.log('before slice buffer = ' + buffer.toString('hex'))
    buffer = buffer.slice(0, packetLength)
    console.log('after slice buffer = ' + buffer.toString('hex'))
    

    我得到的结果是

    before slice buffer = 090001060001020304090000060001020304
    after slice buffer = 090001060001020304
    

    但我需要得到

    before slice buffer = 090001060001020304090000060001020304
    after slice buffer = 090000060001020304
    

    前面的9个字节应该被删除,后面的字节应该被移到前面我怎么做这个简单的方法?

    2 回复  |  直到 7 年前
        1
  •  1
  •   peteb    7 年前

    只需将缓冲区的起始点改为偏移9,而不是从0开始

    let newBuffer = buffer.slice(9).toString('hex')

        2
  •  0
  •   SSpoke    7 年前

    解决了。。

    console.log('before slice buffer = ' + buffer.toString('hex'))
    var newBuffer = new Buffer(buffer.length - packetLength);
    buffer.copy(newBuffer, 0, packetLength, packetLength + buffer.length);
    console.log('after slice buffer =  ' + newBuffer.toString('hex'))
    


    before slice buffer = 090001060001020304090000060001020304
    after slice buffer =  090000060001020304