从 Buffer node.js 前面删除元素
remove elements from front of Buffer node.js
我知道有一个名为 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 个字节应该被删除,后面的字节应该被移到前面我该如何做这个简单的方法?
解决了..
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
只需将缓冲区的起点更改为偏移 9,而不是从 0 开始
let newBuffer = buffer.slice(9).toString('hex')
我知道有一个名为 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 个字节应该被删除,后面的字节应该被移到前面我该如何做这个简单的方法?
解决了..
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
只需将缓冲区的起点更改为偏移 9,而不是从 0 开始
let newBuffer = buffer.slice(9).toString('hex')