iphone - Objective-c 或 C 中的位掩码枚举

标签 iphone c

我正在尝试画一条线,根据值分成几段。例如,如果有 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/

相关文章:

c - 嵌入式 C 文件结构建议

c++ - 该程序最多可产生多少个同时存在的进程(包括原始进程)?

iphone - uitableviewcell调整图像大小

ios - NSNotificationCenter 无法将事件指示器设置为隐藏

iphone - CoreGraphics 替代品?

python - 无法安装 rpi_ws281x "error: command ' gcc' 失败,退出状态为 1"

iphone - UINavigationBar后退按钮不出现

iphone - 是否可以通过编程方式在 iPhone 中启用热点模式?

c - 段错误和引用结构数组

c - C中十六进制字符串到int的转换