Search code examples
c#bytebitbitarray

How to get bit values from Byte?


I have a byte say 1 byte of elements of 8.. How do i get the bit each values? for example, I want 16th bit value, 17th bit, 18th bit so on..

    byte[] _byte = new byte[8];

Solution

  • You can use BitArray() constructor BitArray((Byte[]) to get bits array from byte array. Use indexer on the bit array to get the required bit.

    var bits = new BitArray(_byte);
    

    Now bit 16 would be bits[15];

    You can follow this example to understand how you can get the require bit.

    byte[] _byte = new byte[3] {1,3,7};
    var bits = new BitArray(_byte);
        for(int i=0; i < bits.Length; i++)
            Console.WriteLine(bits[i]);
    

    Output:

    True present 1 at bit and false present 0 at bit

    First Byte Value = 1 = 00000001 (Binary)

    True   = 1            0 bit index 
    False  = 0            1 bit index   
    False  = 0            2 bit index
    False  = 0            3 bit index
    False  = 0            4 bit index   
    False  = 0            5 bit index
    False  = 0            6 bit index
    False  = 0            7 bit index  
    

    Second Byte Value = 3 = 00000011 (Binary)

    True   = 1            8 bit index 
    True   = 1            9 bit index   
    False  = 0            10 bit index
    False  = 0            11 bit index
    False  = 0            12 bit index   
    False  = 0            13 bit index
    False  = 0            14 bit index
    False  = 0            15 bit index  
    

    Third Byte Value = 7 = 00000111 (Binary)

    True   = 1            16 bit index 
    True   = 1            17 bit index   
    True   = 1            18 bit index
    False  = 0            19 bit index
    False  = 0            20 bit index   
    False  = 0            21 bit index
    False  = 0            22 bit index
    False  = 0            23 bit index