Nodejs缓冲区:如何读出位标志?

我正在监听一个TCP套接字上的数据事件。

每个数据事件都为我提供了一个协议帧的缓冲区。 第一个字节作为标题,并包含一些我想访问的标志。

直到那里监听数据事件,并获得第一个字节看起来像:

socket.on('data', function(buff) { console.log(buff[0]); // returns 129 }); 

如果我现在想检查第一位,那么我必须将129转换为位格式,然后检出第一个数字。

 129 => 1000 0001 | 

正如我们所知,JavaScript不支持二进制文件。

我现在想知道如果节点缓冲区对象允许我工作位智者,如果是的话,这将是什么样子?

问候

检查一个标志可以使用&运算符完成。

对于包含第一位的标志:

 1000 0001 129 1000 0000 128 --------- & 1000 0000 128 

对于不包含第一位的标志:

 0101 0001 81 1000 0000 128 --------- & 0000 0000 0 

所以结果是标志(如果标志已被设置)或者零(如果标志没有被设置)。 因此,你可以创build一个函数(其中flag是2的幂):

 var containsFlag = function(number, flag) { return (number & flag) === flag; }; containsFlag(129, 128); // true containsFlag(81, 128); // false