Question
Is there a simple way to convert a bitmask in to an array index?
ie. If i've got an enum
a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10,
etc
and I want to store releated data in an array, is there a simple way such that i can convert a to 0, b to 1, c to 2. etc?
Many thanks
Solution
r = ln base 2
and programmatically,
unsigned int v=yourEnumValue;
unsigned r = 0;
while (v >>= 1)
{
r++;
}
r is your answer
OTHER TIPS
I'm not sure if this is what you're asking, but why don't you just take a 2-base log?
Log2 n?
I dont know a simple solution like you asked for, but why not just use a map instead an array?
Should work without any magic conversion.
Use a std::map:
#include <map>
std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow