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

需要映射位枚举,如位0表示错误1,位1表示错误2,以及C中的int二进制序列,c,C,需要映射位的枚举,如(错误基本上是一些字符串) 位0表示错误1, 位1表示错误2, 位2表示错误3, . . . . 位n表示错误n 十进制值,如int value=283192或任何其他值 我尝试转换283192=100010100100011000 需要帮助如何使用C将此序列映射到上面的枚举 提前感谢我不确定这就是您所说的,但这是一种指示设置了哪些位的方法: unsigned int bitmap = value; unsigned int i = 1; while (bitmap) {

需要映射位的枚举,如(错误基本上是一些字符串) 位0表示错误1, 位1表示错误2, 位2表示错误3, . . . . 位n表示错误n

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

我尝试转换283192=100010100100011000

需要帮助如何使用C将此序列映射到上面的枚举


提前感谢

我不确定这就是您所说的,但这是一种指示设置了哪些位的方法:

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

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

BADERR_BITONE=1请给出一个更好的解释。您想确定给定int中包含哪些错误?或者您想创建具有所述功能的枚举?然后您可以使用类似
error_code=SOME_error | SECOND_error _TOO
的内容设置错误,并使用类似以下内容进行测试:
if(error_code&severy_error){printf(“帮助!!!”}