我正在解析一些二进制文件,我已经打开了它们,并在ArrayBuffer中。
在我正在读取的特定文件结构中,有一些位是boolean的,我可以检查它们是否被检查:
(flag & 1) != 0; // bit 0
(flag & 2) != 0; // bit 1
(flag & 4) != 0; // bit 2 等。
但是,我在获取后续位的值时遇到了问题。它们跨越多个位(例如,位4-6),并由0-7的整数值组成。
如何像这样读取多个比特?我知道这不是一个JavaScript问题,而是比特和按位运算符如何工作的问题。
发布于 2011-12-31 19:55:12
假设你想从一个字节中得到4-6位,如下所示:
76543210
^^^您可以像这样构造一个位掩码:
0x70这意味着:
01110000然后你会用这个数字,向右移动4次:
( byte & 0x70 ) >> 4
//Number between 0-7发布于 2011-12-31 19:51:50
假设最低有效位在位置"0",并且您希望3位整数在位位置4-6之间。
var value = (flag >>> 4) & 0x0007;换言之,向右移位4位,这样位4-6被移位到位置0-2。然后只屏蔽最后三位(二进制111 =十进制7)。
https://stackoverflow.com/questions/8687926
复制相似问题