Frage

Gibt es eine einfache Möglichkeit, eine Bitmaske in einem Array-Index?

konvertieren

dh. Wenn ich habe eine Enumeration bekam

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

und ich möchte in einem Array releated Daten speichern, gibt es eine einfache Art und Weise, so dass ich eine bis 0, b 1, c 2 usw. umwandeln kann?

Vielen Dank

War es hilfreich?

Lösung

r =   ln base 2 
and programmatically,

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

r is your answer

Andere Tipps

Ich bin mir nicht sicher, ob dies ist, was Sie fragen, aber warum Sie nicht nur nehmen Sie ein 2-Basisprotokoll?

Anmelden 2 n

Ich weiß nicht, eine einfache Lösung, wie Sie gefragt, aber warum eine Karte einfach nicht statt ein Array verwenden?

Sollte ohne magische Umwandlung arbeiten.

Verwenden Sie eine std :: map:

#include <map>

std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top