3

ビットマスクを配列インデックスに変換する簡単な方法はありますか?

すなわち。列挙型がある場合

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

関連するデータを配列に保存したいのですが、a を 0 に、b を 1 に、c を 2 に変換する簡単な方法はありますか?

どうもありがとう

4

5 に答える 5

6
r =   ln base 2 
and programmatically,

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

r is your answer
于 2009-03-30T12:19:41.910 に答える
4

これがあなたの求めているものかどうかはわかりませんが、2 ベースのログを取りませんか?

于 2009-03-30T12:19:06.280 に答える
3

ログ2 n?

于 2009-03-30T12:18:50.230 に答える
2

あなたが求めたような簡単な解決策はわかりませんが、配列の代わりにマップを使用しないのはなぜですか?

魔法の変換なしで動作するはずです。

于 2009-03-30T12:18:48.527 に答える
1

std::map を使用します。

#include <map>

std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
于 2009-03-30T12:19:43.847 に答える