-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. Android如何檢查權限?
- 2. 檢查權限
- 3. 檢查權限?
- 4. 檢查用戶權限的權限
- 5. 如何用opencart版本2.2.0.0取代英格蘭國旗與法國國旗
- 6. 如何檢查userLocation的權限
- 7. 如何檢查片段中的權限
- 8. Android檢查權限
- 9. 把國旗放在國家
- 10. Windbg,如何檢查內存段權限?
- 11. 如何檢查管理員權限C#
- 12. Ant Build-Script如何檢查root權限
- 13. 如何檢查SharePoint文檔權限?
- 14. 如何在Plone中檢查權限?
- 15. 在ViewModel中如何檢查權限?
- 16. 檢查表的權限
- 17. Liferay:JSF中的權限檢查
- 18. 檢查Facebook上的權限
- 19. NO_CI國旗與Hudson
- 20. 大會SF國旗
- 21. 如何實施「報告/國旗評論」
- 22. 帶國旗的Html國家列表
- 23. 如何用angularjs中的國旗獲取國名
- 24. 關於ev_default_fork的libev國旗
- 25. Mailitem.SentOnBehalfOfName:檢查權限在Exchange
- 26. 檢查權限動態
- 27. PHP目錄權限檢查
- 28. Laravel 5檢查權限
- 29. Android Facebook 4.0:檢查權限
- 30. 在HDFS中檢查權限