문제

비트 마스크를 배열 인덱스로 변환하는 간단한 방법이 있습니까?

즉. 열거가 있다면

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

그리고 선출 된 데이터를 배열에 저장하고 싶습니다. A를 0, b로 1, c에서 2로 변환 할 수있는 간단한 방법이 있습니까?

많은 감사합니다

도움이 되었습니까?

해결책

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