Бит записи в буферных узлах - PullRequest
0 голосов
/ 07 мая 2018

Друзья, как я могу написать немного в Node js Buffer, я могу написать байт, целые числа и т.д., но не знаю, как писать биты. Является ли это возможным? если да то как? Я должен написать bollean в буфере 1 или 0 и прочитать его в API, используя readBit (), поэтому мне нужно записать немного в буфер.

1 Ответ

0 голосов
/ 07 мая 2018

Вы не можете получить доступ к одному биту напрямую, но можете просто поработать над битами в JS.

Это позволит вам читать и записывать отдельные биты в буфер узла (Uint8Array).

var buffer = new Uint8Array(1);

function readBit(buffer, i, bit){
  return (buffer[i] >> bit) % 2;
}

function setBit(buffer, i, bit, value){
  if(value == 0){
    buffer[i] &= ~(1 << bit);
  }else{
    buffer[i] |= (1 << bit);
  }
}

// write bit 0 of buffer[0]
setBit(buffer, 0, 0, 1)

// write bit 1 of buffer[0]
setBit(buffer, 0, 1, 1)
setBit(buffer, 0, 1, 0)

// write bit 2 of buffer[0]
setBit(buffer, 0, 2, 0)

// write bit 3 of buffer[0]
setBit(buffer, 0, 3, 0)
setBit(buffer, 0, 3, 1)

// read back the bits
console.log(
  readBit(buffer, 0, 0),
  readBit(buffer, 0, 1),
  readBit(buffer, 0, 2),
  readBit(buffer, 0, 3)
);
...