convert from BitArray to 16-bit unsigned integer in c#

3.5k views Asked by At
BitArray bits=new BitArray(16); // size 16-bit

There is bitArray and I want to convert 16-bit from this array to unsigned integer in c# , I can not use copyto for convert, is there other method for convert from 16-bit to UInt16?

4

There are 4 answers

4
Sergey Kalinichenko On BEST ANSWER

You can do it like this:

UInt16 res = 0;
for (int i = 0 ; i < 16 ; i++) {
    if (bits[i]) {
        res |= (UInt16)(1 << i);
    }
}

This algorithm checks the 16 least significant bits one by one, and uses the bitwise OR operation to set the corresponding bit of the result.

0
Anthony On

You can loop through it and compose the value itself.

var bits = new BitArray(16);
bits[1] = true;
var value = 0;

for (int i = 0; i < bits.Length; i++)
{
    if (lBits[i])
    {
        value |= (1 << i);
    }
}
1
yosbel On

You can check this another anwser already in stackoverflow of that question:

Convert bit array to uint or similar packed value

0
inquisitive On

This should do the work

    private uint BitArrayToUnSignedInt(BitArray bitArray)
    {
        ushort res = 0;
        for(int i= bitArray.Length-1; i != 0;i--)
        {
            if (bitArray[i])
            {
                res = (ushort)(res + (ushort) Math.Pow(2, bitArray.Length- i -1));
            }
        }
        return res;
    }