从Buffer读取二进制数据

时间:2017-01-18 09:18:34

标签: node.js

我正在尝试检查给出Buffer的二进制数据,如下所示:

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

TMK,即8字节数据。

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

如何判断第一位是零还是一位?

1 个答案:

答案 0 :(得分:3)

最简单的解决方案是:

Number(buf[0] > 127)

因为:

  1. JS将字节视为无符号,AKA始终为正;因此字节的值在 [0..255] 范围内,而 [ - 128..127] 则用于有符号字节。
  2. 数字(true)== 1 ,数字(false)== 0
  3. 仅当字节在 [128..255]
  4. 范围内时,最高位 1

    (Bonus)更难阅读但更性感的版本:

    ((buf[0] & 0xff) >> 7)
    
相关问题