需要映射位的枚举,如位0表示错误1,位1表示错误2,在C中使用int二进制序列

时间:2011-07-28 11:40:30

标签: c

需要映射枚举位(错误基本上是一些字符串) 位0表示错误1, 位1表示错误2, 第2位表示error3, 。 。 。 。 位n表示错误n

十进制值,如int value = 283192或任何其他值。

我尝试转换283192 = 1000101001000111000。

需要帮助如何使用C。

将此序列与上面的枚举映射

提前致谢

2 个答案:

答案 0 :(得分:1)

不确定这是你在说什么,但这是一种表明设置了哪些位的方法:

unsigned int bitmap = value;
unsigned int i = 1;
while (bitmap) {
    if (bitmap & 1) {
        printf("Error number %i\n", i);
    }
    bitmap >>= 1;
    ++i;
}

答案 1 :(得分:1)

喜欢这个吗?

enum bad_errorcode {
  BADERR_NOBITS = 0,
  BADERR_BITONE = 1 << 0,
  BADERR_BITTWO = 1 << 1,
  BADERR_BITTHREE = 1 << 2,
  BADERR_BITFOUR = 1 << 3,
  /* ... */
};