-3
A
回答
2
可以使用bitwise AND operator (&
),像這樣:
if ((flag & 0x08) == 0x08) {
// They have it
}
(0x08的十六進制= 1000二進制= 8小數。)
&
取操作數和還給僅包含所設置的位的值在操作數的均爲(將操作數轉換爲標準2的補碼32位整數後)。因此0x0C & 0x08
是0x08
,因爲0x08
位設置在兩個操作數中,但(比如說)0x07 & 0x08
是0x00
,因爲其中一個操作數沒有設置位。
如果你檢查你知道值只包含一個位(如0x08
),你實際上並不需要== 0x08
的一部分,這是好的:
if (flag & 0x08) {
// They have it
}
但如果您曾戴過口罩,則需要檢查多個位,例如0x0A
,則需要==
,否則結果將是0x08
或0x02
以及0x0A
。所以使用(thingToTest & flagToTestFor) == flagToTestFor
這樣的模式是一個很好的習慣。
你不必使用十六進制,但是在使用位時我發現它很方便(因爲JavaScript沒有文字二進制表示法)。或者你可以考慮一些「常數」(這真的可以在ES6常量,但現在我們將與ES5棒),你在聲明你的代碼的開頭:
var CREATE_FLAG = parseInt("1000", 2);
var READ_FLAG = parseInt("0100", 2);
var UPDATE_FLAG = parseInt("0010", 2);
var DELETE_FLAG = parseInt("0001", 2);
...然後你可以做if ((flag & CREATE_FLAG) == CREATE_FLAG)
。
相關問題
- 1. 檢查權限
- 2. 如何用opencart版本2.2.0.0取代英格蘭國旗與法國國旗
- 3. 如何檢查片段中的權限
- 4. Android檢查權限
- 5. 如何檢查SharePoint文檔權限?
- 6. Ant Build-Script如何檢查root權限
- 7. 在ViewModel中如何檢查權限?
- 8. 如何檢查管理員權限C#
- 9. 檢查Facebook上的權限
- 10. 大會SF國旗
- 11. 如何實施「報告/國旗評論」
- 12. 帶國旗的Html國家列表
- 13. 關於ev_default_fork的libev國旗
- 14. 如何用angularjs中的國旗獲取國名
- 15. Android Marshmallow檢查權限
- 16. 靜態檢查rest_framework權限
- 17. 檢查權限請求
- 18. 檢查文件權限
- 19. 在HDFS中檢查權限
- 20. 檢查文件權限
- 21. 檢查旗幟加載
- 22. 位置權限檢查和授權
- 23. Python/Django從IP獲得國家國旗
- 24. Rails 3美國國旗寶石?
- 25. 美國國旗排序優化
- 26. 在objective-c中掃描國家國旗
- 27. 檢查,如果權限已被Android中
- 28. 國旗從未初始化
- 29. 上[授權(角色)]使用枚舉[國旗]和位運算符
- 30. Makefile:檢查對目錄的寫權限