簡體   English   中英

如何動態組成位掩碼?

[英]How to dynamically compose a bitmask?

可以說我必須提供一個值作為位掩碼。

NSUInteger options = kFoo | kBar | kFooBar;

並說位掩碼確實很大,可能有100個選項。 但是我有哪些選擇取決於很多情況。 我如何動態組成這樣的位掩碼?

這有效嗎?

NSUInteger options;

if (foo) {
    options = options | kFoo;
}

if (bar) {
    options = options | kBar;
}

if (fooBar) {
    options = options | kFooBar;
}

(盡管在執行| bitmask運算符操作為“無”時這可能會崩潰。

除了添加更多位時需要將位字段初始化為0以外,幾乎所有其他功能都可以使用:

NSUInteger options = 0;

if (foo) options |= kFoo;
if (bar) options |= kBar;
// etc.

還要注意,位域只能容納有限數量的位(通常為32或64位)。 如果需要更多位(例如您提到的100),則需要一個整數數組,並且在設置和獲取位以訪問正確的數組元素和該元素的正確位時需要特別小心。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM