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