有没有一种简单的方法将位掩码转换为数组索引?
例如,如果我有一个枚举值:
例如,如果我有一个枚举值:
a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10,
etc
我希望能够将相关数据存储在数组中,是否有一种简单的方法可以将a转换为0,b转换为1,c转换为2等等?
非常感谢。
a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10,
etc
我希望能够将相关数据存储在数组中,是否有一种简单的方法可以将a转换为0,b转换为1,c转换为2等等?
非常感谢。
r = ln base 2
and programmatically,
unsigned int v=yourEnumValue;
unsigned r = 0;
while (v >>= 1)
{
r++;
}
r is your answer
我不确定这是否是您要问的,但为什么不直接取2为底的对数呢?
Log2 n?
使用std::map:
#include <map>
std::map <my_enum, my_datatype> m;
m[ a ] = whatever;