[英]Bitwise operators in Javascript and in general
我正在解析一些二進制文件,將它們打開並放在ArrayBuffer
。
在我正在讀取的特定文件結構中,有很多位是boolean
,我可以檢查是否用以下方法檢查它們:
(flag & 1) != 0; // bit 0
(flag & 2) != 0; // bit 1
(flag & 4) != 0; // bit 2
等等
但是,我在獲取后面的位值時遇到了麻煩。 它們跨越多個位(例如位4-6),並由0-7的整數組成。
如何讀取多個位? 我了解到,這不是JavaScript問題,而是關於按位和按位運算符如何工作的問題。
假設您希望從這樣的字節中獲取4-6位:
76543210
^^^
您將像這樣構造一個位掩碼:
0x70
意思是:
01110000
然后,您將&與數字相乘並右移4次:
( byte & 0x70 ) >> 4
//Number between 0-7
假設最低有效位在位置“ 0”,並且您希望位位置4-6之間的3位整數。
var value = (flag >>> 4) & 0x0007;
換句話說,右移“標志”到右邊4位,這樣位4-6被移入位置0-2。 然后屏蔽掉最后三個位(二進制111 =十進制7)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.