سؤال

هل هناك طريقة بسيطة لتحويل قناع بت في لمؤشر مجموعة؟

وأي. اذا كنت قد حصلت على التعداد

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

ووأريد أن تخزين البيانات releated في صفيف، هناك طريقة بسيطة من هذا القبيل أستطيع أن تحويل إلى 0، ب إلى 1، ج إلى 2. وما إلى ذلك؟

وشكرا جزيلا

هل كانت مفيدة؟

المحلول

r =   ln base 2 
and programmatically,

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

r is your answer

نصائح أخرى

ولست متأكدا إذا كان هذا هو ما كنت طالبا، ولكن لماذا لا تأخذ فقط سجل 2-القاعدة؟

ودخول <الفرعية> 2 ن؟

وأنا لا أعرف حلا بسيطا مثل طلبتم، ولكن لماذا لا مجرد استخدام خريطة بدلا مجموعة؟

ويجب أن تعمل دون أي تحويل السحري.

استخدم في الأمراض المنقولة جنسيا :: الخريطة:

#include <map>

std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top