我正在尝试画一条线,根据值分成几段。例如,如果有 5 个字段,并且所有 5 个字段均为 true,那么我的线路将如下所示
-----
如果说第一个和最后一个字段为 true,而其他所有字段均为 false,那么它就是
- -
我想我可以用某种位掩码来做到这一点。首先,我以前从未做过一点面具,但我想我到处都见过它们。我想知道如何解决这个问题,并使用枚举而不是 1/0 来提高可读性。据我从数据中可以看出,对于不同的属性,我只需要 1 或 0 的值。但是,最好知道如何使其中一个值成为三级或更高级别的枚举以供将来引用。谢谢!
尝试做类似的事情:
enum CodingRegions {
Coding = 0x01,
NonCoding = 0x02
};
enum Substitution {
Synonymous = 0x04,
NonSynonmous = 0x05
};
然后根据对象的值,我可以这样做
bitmask???? = object.CodingRegion | object.Substitution;
然后,以某种方式检查位掩码的值,然后根据值相应地绘制线条。
最佳答案
不确定您的具体要求是什么,但这是用 C 编写的一种方法:
#include <stdio.h>
typedef enum MyField_ {
hasWombat = 1 << 0,
hasTrinket = 1 << 1,
hasTinRoof = 1 << 2,
hasThreeWheels = 1 << 3,
myFieldEnd = 1 << 4,
} MyField;
void printMyField(MyField data) {
MyField field = 1;
while (field != myFieldEnd) {
printf("%c", data & field ? '-' : ' ');
field <<= 1;
}
printf("\n");
}
int main() {
MyField data = hasTrinket | hasThreeWheels;
printMyField(data);
data |= hasWombat; // set a field
data &= ~hasTrinket; // clear a field
printMyField(data);
return 0;
}
关于iphone - Objective-c 或 C 中的位掩码枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711424/