Манипулирование Nybbles и меньше в c # - PullRequest
1 голос
/ 23 сентября 2009

У меня есть приложение, которое требует манипулирования nybbles и, возможно, даже отдельными битами одновременно. Есть ли в C # библиотека, которая может мне помочь?

Ответы [ 2 ]

5 голосов
/ 23 сентября 2009

Вы можете использовать BitVector32 для манипулирования битами в 32-битном целом числе и BitArray для получения массива битов, представляющих набор логических переменных.

Кроме того, довольно просто написать пару функций для управления отдельными битами:

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);
}
2 голосов
/ 23 сентября 2009

Библиотека действительно не нужна

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.");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...