【问题标题】:remove elements from front of Buffer node.js从 Buffer node.js 前面移除元素
【发布时间】:2019-02-28 07:56:00
【问题描述】:

我知道有一个名为 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 个字节应该被删除,后面的字节应该被移动到前面我怎么做这个简单的方法?

【问题讨论】:

    标签: node.js buffer slice splice array-splice


    【解决方案1】:

    解决了..

    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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 酷那比我做过的更好,不敢相信我忽略了这一点
      猜你喜欢
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多