Node.js 从缓冲区读取二进制数据

Node.js 从缓冲区读取二进制数据,node.js,Node.js,我试图检查给定缓冲区的二进制数据,如下所示: <Buffer 08 30 66 6d 41 64 69 76 66> TMK,即8字节的数据 我要做的是检查第一个字节,并查看第一个字节中的最高有效位(最左边的位) 如何确定第一位是零还是一?最简单的解决方案是: Number(buf[0] > 127) 之所以有效,是因为: JS将字节视为无符号,即始终为正;因此,字节的值在[0..255]范围内,而有符号字节的值在[-128..127]范围内 数字(真)=1,数字(假)

我试图检查给定缓冲区的二进制数据,如下所示:

<Buffer 08 30 66 6d 41 64 69 76 66>

TMK,即8字节的数据

我要做的是检查第一个字节,并查看第一个字节中的最高有效位(最左边的位)


如何确定第一位是零还是一?

最简单的解决方案是:

Number(buf[0] > 127)
之所以有效,是因为:

  • JS将字节视为无符号,即始终为正;因此,字节的值在[0..255]范围内,而有符号字节的值在[-128..127]范围内
  • 数字(真)=1,数字(假)=0
  • 只有当字节位于范围[128..255]
  • (额外)更难阅读但更性感的版本:

    ((buf[0] & 0xff) >> 7)