как сконвертировать 2 байта hex Buffer в int

315
26 мая 2017, 14:50

есть вот такой буфер hex-значений - fe ff 03 99 00 01

мне нужны последние 2 байта - достаю их так

buf.slice(4,6)

получаю буфер 00 01

как преобразовать их к int что бы получилось 1?

а в случае если бы было 1A 17 получить 6679 и тд.

Answer 1

У класса 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
Answer 2

Можно использовать метод 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); // выводим в консоль результат

READ ALSO
Получение аудио-стрима через Chrome Extension

Получение аудио-стрима через Chrome Extension

Нужно получить аудио-стрим микрофона (не звука во вкладке, а именно микрофона) через расширение ChromeОбычный navigator

445
Как получить текст из редактора?

Как получить текст из редактора?

Использую этот редактор

381
Медленная загрузка JavaScript на IIS 10

Медленная загрузка JavaScript на IIS 10

Приветствую! У меня на IIS 10 есть 10 JS файлов по 5-10 КБПри заходе на сайт (Если пользователь не имеет кэша (То есть CTRL+ F5)) сайт грузит по 10-20 секунд...

277