位掩码到数组索引

Dyn*_*ite 3 c++ indexing bitmask

有没有一种简单的方法将位掩码转换为数组索引?

即.如果我有一个枚举

a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10, 
etc
Run Code Online (Sandbox Code Playgroud)

我想将相关数据存储在数组中,是否有一种简单的方法可以将a转换为0,b转换为1,c转换为2.等等?

非常感谢

lak*_*raj 6

r =   ln base 2 
and programmatically,

unsigned int v=yourEnumValue;
unsigned r = 0; 
while (v >>= 1) 
{
   r++;
}

r is your answer
Run Code Online (Sandbox Code Playgroud)