从缓冲区读取二进制数据
我试图检查给定一个缓冲区的二进制数据如下所示:
<Buffer 08 30 66 6d 41 64 69 76 66>
TMK是8个字节的数据。
我要做的是检查第一个字节,并查看第一个字节中最重要的位(最左边的位)。
我怎么知道这个第一位是零还是一位?
最简单的解决方法是:
Number(buf[0] > 127)
因为:
- JS把字节视为无符号的,AKA总是正的; 一个字节的值因此在[0..255]的范围内,而带符号字节的是[-128..127] 。
- 数字(真)== 1 ,数字(假)== 0
- 只有当字节在范围[128..255]时,最高有效位是1。
(奖金)更难阅读,但性感的版本:
((buf[0] & 0xff) >> 7)