Comment utiliser les opérateurs logiques pour déterminer si un bit est défini, ou est le décalage de bits la seule solution ?
J'ai trouvé cette question qui utilise le décalage de bits, mais je pense que je peux simplement AND
ma valeur.
Pour un peu de contexte, je lis une valeur dans Active Directory et j'essaie de déterminer s'il s'agit d'un objet de base de schéma. Je pense que mon problème est un problème de syntaxe, mais je ne sais pas comment le corriger.
foreach (DirectoryEntry schemaObjectToTest in objSchema.Children)
{
var resFlag = schemaObjectToTest.Properties["systemFlags"].Value;
//if bit 10 is set then can't be made confidential.
if (resFlag != null)
{
byte original = Convert.ToByte( resFlag );
byte isFlag_Schema_Base_Object = Convert.ToByte( 2);
var result = original & isFlag_Schema_Base_Object;
if ((result) > 0)
{
//Un résultat non nul indique que le bit a été trouvé
}
}
}
Lorsque je regarde le débogueur : resFlag
est un object{int}
et la valeur est 0x00000010
. isFlag_Schema_Base_Object
est 0x02