C#获取32位uint的最后10位

时间:2015-03-11 11:08:50

标签: c# c#-4.0

我希望获得32位整数的最后10位,

基本上我所做的就是取一个数字并将它塞进前22位,我可以很好地提取这个数字

int test = Convert.ToInt32(uIActivityId >> nMethodBits); //method bits == 10 so this just pushes the last ten bits off the range

测试结果是我在第一时间输入的数字。

但现在我很难过。所以我对你们的问题是。如何获得32位整数的最后十位?

4 个答案:

答案 0 :(得分:7)

首先为您想要的那些位创建一个1位的掩码,为那些您不感兴趣的位创建一个0位。然后使用二进制&仅保留相关位。

const uint mask = (1 << 10) - 1; // 0x3FF
uint last10 = input & mask;

答案 1 :(得分:2)

这是另一次尝试!!

List<bool> BitsOfInt(int input , int bitCount)
    {
        List<bool> outArray = new BitArray (BitConverter.GetBytes(input)).OfType<bool>().ToList();
        return outArray.GetRange(outArray.Count - bitCount, bitCount);
    }

答案 2 :(得分:1)

public bool[] GetLast10Bits(int input) {
        BitArray array = new BitArray(new []{input});

        List<bool> bits = new List<bool>();
        if (array.Length > 10) {
            return Enumerable.Range(0, 10).Select(i => array[i]).ToArray();
        }
        return new bool[0];
    }

答案 3 :(得分:1)

int i = Convert.ToInt32("11100111101", 2);
int mask = Convert.ToInt32("1111111111", 2);
int test = Convert.ToInt32(( i&mask));
int j = Convert.ToInt32("1100111101", 2);
if (test == j)
   System.Console.Out.WriteLine("it works");