[英]node.js - Slice a byte into bits
如何从缓冲区中取一个八位字节并将其转换为二进制序列? 我想通过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/
你可能会提高效率,但这种方法非常简单。 这循环在偏移i
,从7下降到0,并使用位掩码1 << i
找到第i
位。 如果第i
位置位则bit
变为1
,否则为0
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.