我希望获得32位整数的最后10位,
基本上我所做的就是取一个数字并将它塞进前22位,我可以很好地提取这个数字
int test = Convert.ToInt32(uIActivityId >> nMethodBits); //method bits == 10 so this just pushes the last ten bits off the range
测试结果是我在第一时间输入的数字。
但现在我很难过。所以我对你们的问题是。如何获得32位整数的最后十位?
答案 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");