Объединение 8 старших бит и 8 младших бит в JavaScript - PullRequest
2 голосов
/ 12 марта 2019

Я отправляю глубину воды в мм на мой сервер NodeRed, где в настоящее время пытаюсь реконструировать 16-битное Int, разделенное на 8 старших и 8 младших битов.

Я пытался просто сохранить старшие биты в переменной и сдвинуть их, оставив 8 пробелов, а затем добавить младшие биты в переменную, выполнив ИЛИ два, но у меня ничего не получилось.

Я видел где-то, кто-то предложил попробовать это

var _firstNumber = (((number8Bit2 & 0xff) << 8) | (number8Bit1 & 0xff));

Есть предложения друзей?

Вот функция узла красного цвета

msg1 = {};
msg2 = {};

var buf1 = msg.payload.slice(0,1);
var buf2 = msg.payload.slice(1, 2);

var lvl = (((buf2 & 0xff) << 8) | (buf1 & 0xff));

var buf3 = msg.payload.slice(2,3);
var batt = buf3.readUInt8();

batt = (batt + 127)/100;

msg1.payload = lvl;
msg1.topic = 'waterlevel';
msg2.payload = batt;
msg2.topic = 'battery';

return [msg1, msg2];
...