在c#中从BitArray转换为16位无符号整数

时间:2013-12-17 15:29:21

标签: c# asp.net int bit bitarray

BitArray bits=new BitArray(16); // size 16-bit

有bitArray,我想将16位从这个数组转换为c#中的无符号整数,  我无法使用copyto进行转换,还有其他方法可以从16-bit转换为UInt16吗?

4 个答案:

答案 0 :(得分:4)

你可以这样做:

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

该算法逐个检查16个最低有效位,并使用按位OR运算来设置结果的相应位。

答案 1 :(得分:0)

您可以遍历它并自行组合值。

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);
    }
}

答案 2 :(得分:0)

这应该完成工作

    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;
    }

答案 3 :(得分:-1)

你可以在该问题的stackoverflow中检查另一个anwser:

Convert bit array to uint or similar packed value