首页 > 解决方案 > 在缓冲区Nodejs中写入位

问题描述

朋友们,我如何向 Node js Buffer 中写入一点,我可以写入字节、整数等但不知道如何写入位。可能吗?如果是,那怎么办?我应该在缓冲区 1 或 0 中写入一个布尔值,并使用 readBit() 在 API 中读取它,这就是为什么我需要在缓冲区中写入一点。

标签: node.jsbytebufferbit

解决方案


您不能直接访问单个位,但可以在 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)
);


推荐阅读