是否有一个位掩码中转换到一个数组索引的简单方法?

即。如果我有一个枚举

a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10, 
etc

和欲相关型号数据存储在数组中,会出现这样,我可以转换到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基地日志?

日志<子> 2 N'

我不知道一个简单的解决方案就像你问的,但为什么不直接使用地图,而不是一个数组?

应该没有任何魔法转换。

使用一个std ::地图:

#include <map>

std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top