C# 在c语言中从位数组转换为16位无符号整数#

C# 在c语言中从位数组转换为16位无符号整数#,c#,asp.net,int,bit,bitarray,C#,Asp.net,Int,Bit,Bitarray,有一个bitArray,我想把这个数组中的16位转换成c#中的无符号整数, 我不能使用copyto进行转换,是否有其他方法将16位转换为UInt16?您可以这样做: BitArray bits=new BitArray(16); // size 16-bit uint16 res=0; for(int i=0;i!=16;i++){ if(位[i]){ res |=(uint16)(1您可以循环遍历它并合成值本身 uint16 res = 0; for (int i = 0 ; i != 16

有一个bitArray,我想把这个数组中的16位转换成c#中的无符号整数,
我不能使用copyto进行转换,是否有其他方法将
16位
转换为
UInt16

您可以这样做:

BitArray bits=new BitArray(16); // size 16-bit
uint16 res=0;
for(int i=0;i!=16;i++){
if(位[i]){

res |=(uint16)(1您可以循环遍历它并合成值本身

uint16 res = 0;
for (int i = 0 ; i != 16 ; i++) {
    if (bits[i]) {
        res |= (uint16)(1 << i);
    }
}
var位=新的位数组(16);
位[1]=真;
var值=0;
for(int i=0;i值|=(1您可以检查该问题的另一个问题:


这应该可以完成这项工作

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

这个例子使用COPYTO,他不能使用这个,正如问题res |=(1@user2922938哦,我忘了添加一个cast。这应该在编辑后生效。plz我是c的初学者,你能解释更多吗,什么是(cast)?@user2922938我在
(uint16)
前面添加了
(1
    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;
    }