2009-09-22 4 views
1

J'ai une application qui nécessite de manipuler nybbles et peut-être même des bits individuels à la fois. Y a-t-il une bibliothèque en C# qui peut m'aider?Manipulation Nybbles et plus petit dans C#

+0

nybble est une orthographe parfaitement valable, mais je supprime l'étranger Mots clés. – RCIX

+1

Apprenez quelque chose de nouveau chaque jour. Cependant, nybble est aussi peu attrayant que la couleur est; D – user7116

Répondre

5

Vous pouvez utiliser BitVector32 pour manipuler des bits dans un entier de 32 bits et BitArray pour avoir un tableau de bits représentant un ensemble de variables booléennes.

De plus, il est assez facile d'écrire un couple fonctionne pour manipuler des bits individuels:

public bool GetBitValue(int integer, int bit) { 
    return (integer & (1 << bit)) != 0; 
} 

public bool SetBitValue(ref int integer, int bit, bool value) { 
    if (value) 
     integer |= 1 << bit; 
    else 
     integer &= ~(1 << bit); 
} 
+0

Solution élégante, je l'aime! – ParmesanCodice

2

Une bibliothèque est vraiment inutile

uint myVar = 257; 
const uint SOME_FLAG_A = 256 // 100000000 
const uint SOME_FLAG_B = 16 // 000010000 
const uint SOME_FLAG_C = 1 // 000000001 

if(myVar & SOME_FLAG_A == SOME_FLAG_A) 
    Console.WriteLine("Bit A is set!"); 
else 
    Console.WriteLine("Bit A is not set."); 

if(myVar & SOME_FLAG_B == SOME_FLAG_B) 
    Console.WriteLine("Bit B is set!"); 
else 
    Console.WriteLine("Bit B is not set."); 

myVar = myVar | SOME_FLAG_B; 

if(myVar & SOME_FLAG_B == SOME_FLAG_B) 
    Console.WriteLine("Bit B is set!"); 
else 
    Console.WriteLine("Bit B is not set."); 

if(myVar & SOME_FLAG_C == SOME_FLAG_C) 
    Console.WriteLine("Bit C is set!"); 
else 
    Console.WriteLine("Bit C is not set."); 
Questions connexes