node.js – 将一个字节分成几个比特

我怎样才能从缓冲区中取出一个八位字节并将其转换为二进制序列? 我想通过node.js解码协议rfc1035 ,但发现很难使用位。

这是一个代码,但它不适合我 – 因为它是我的黑盒子:

var sliceBits = function(b, off, len) { var s = 7 - (off + len - 1); b = b >>> s; return b & ~(0xff << len); }; 

使用一个位掩码 ,八位字节是8位,所以你可以做如下的事情:

 for (var i = 7; i >= 0; i--) { var bit = octet & (1 << i) ? 1 : 0; // do something with the bit (push to an array if you want a sequence) } 

例如: http : //jsfiddle.net/3NUVq/

你也许可以让这个更高效,但是这个方法非常简单。 这个循环在从7到0的偏移量i ,并使用位掩码1 << ifind第i位。 如果第i位被设置,则bit变为1 ,否则将变为0