Domanda

C'è un modo semplice per convertire una maschera di bit in un indice di matrice?

es. Se ho un enum

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

e voglio per memorizzare i dati in un array releated, c'è un modo semplice tale che posso convertire un a 0, b per 1, c a 2. etc?

Grazie

È stato utile?

Soluzione

r =   ln base 2 
and programmatically,

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

r is your answer

Altri suggerimenti

Non sono sicuro se questo è quello che stai chiedendo, ma perché non basta prendere un log 2-base?

Entra 2 n

Non so una soluzione semplice come avete chiesto, ma perché non basta usare una mappa invece un array?

Dovrebbe funzionare senza alcuna conversione magia.

Usa uno std :: map:

#include <map>

std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top