есть вот такой буфер hex-значений - fe ff 03 99 00 01
мне нужны последние 2 байта - достаю их так
buf.slice(4,6)
получаю буфер 00 01
как преобразовать их к int что бы получилось 1?
а в случае если бы было 1A 17 получить 6679 и тд.
У класса Buffer есть специальный API для чтения данных. В вашем случае отлично подходит метод Buffer.prototype.readUInt16BE:
var b1 = Buffer.from([0xfe, 0xff, 0x03, 0x99, 0x00, 0x01]);
console.log(b1.readUInt16BE(4)); // 1
var b2 = Buffer.from([0xfe, 0xff, 0x03, 0x99, 0x1A, 0x17]);
console.log(b2.readUInt16BE(4)); // 6679
Можно использовать метод parseInt для конвертации строки в число , только необходимо, чтобы пробелов не было в строке (к примеру так - "0001" корректно, а так "00 01" - нет).
Пример конвертирования hex в int:
var hexOne = '0001';
var hexTwo = '1A17';
var one = parseInt(hexOne, 16);
var two = parseInt(hexTwo, 16);
console.log(one);
console.log(two);
Массив в строку можно конвертировать разными способами, к примеру через join вот так:
var arr = ['1A', '17']; // массив
var hexStr = arr.join(''); // получаем строку `1A17`
var number = parseInt(hexStr, 16); // конвертируем строку в число
console.log(number); // выводим в консоль результат
Сборка персонального компьютера от Artline: умный выбор для современных пользователей