質問

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

すなわち。私は列挙型を持っていれば、

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

と私は配列にreleatedデータを格納したい、私は2などにC、B 1に、0に変換することができるような簡単な方法は何ですか?

多くの感謝

役に立ちましたか?

解決

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