node.js - 将一个字节切成位

时间:2013-08-06 19:15:05

标签: javascript node.js buffer

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

这是一个代码,但它不适合我 - 因为它对我来说是黑盒子:

var sliceBits = function(b, off, len) {
  var s = 7 - (off + len - 1);

  b = b >>> s;
  return b & ~(0xff << len);
};

1 个答案:

答案 0 :(得分:3)

使用bitmask,八位字节为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/

你可能会提高效率,但这种方法非常简单。这将在偏移i上循环,从7下降到0,并使用位掩码i找到1 << i位。如果设置了i位,则bit变为1,否则将为0