Я знаю, что есть функция под названием 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 байтов должны быть удалены, а байты после них должны быть перемещены вперед, как мне сделать этот простой способ?

1
SSpoke 24 Сен 2018 в 21:46

2 ответа

Лучший ответ

Просто измените начальную точку вашего буфера, чтобы она была смещена на 9 вместо того, чтобы начинать с 0

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

1
peteb 24 Сен 2018 в 19:09

Решил это ..

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
0
SSpoke 24 Сен 2018 в 19:08