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 << i
find第i
位。 如果第i
位被设置,则bit
变为1
,否则将变为0
。