Comparto este pequeño código para obtener un bit de una array.
Yo lo uso para almacenar una cantidad indeterminada de bits de configuración. Obviamente configuración de estado: verdadero/falso.
struct OPTIONS{
private:
unsigned long* config;
public:
OPTIONS(unsigned long* config){
this->config = config;
}
bool getOpt(unsigned long index){
unsigned int iIdx;
unsigned long dwCfg;
dwCfg = *(unsigned long*)(this->config + index/(sizeof(unsigned long)*8));
iIdx = index%(sizeof(unsigned long)*8);
return ((dwCfg>>iIdx)&0x1);
}
};
Ejemplo de uso:
void main(){
unsigned long cfg[] = {0xBABA, 0xDEADBEEF};
OPTIONS o(cfg);
for(int i = 0; i<64; i++)
printf("%d", o.getOpt(i));
}
Ejemplo real de uso:
#define INYECT_CODE 0x0
#define MUTEX 0x1
#define FORCE_ADMIN 0x2
void main(){
OPTIONS o(GetModuleHandle(0));
if(o.getOpt(INYECT_CODE))
//Whatever
if(o.getOpt(MUTEX))
//Whatever
if(o.getOpt(FORCE_ADMIN))
//Whatever
else
//Whatever
}
Saludos 8)