C#Number to BitMask32 to Values

时间:2011-04-25 13:32:59

标签: c# bitmask

我得到的数字如513.我需要将此数字转换为bitmask32然后我需要计算每个1位在数组中的位置

例如 513 = 0和9

如何将数字转换为bit32然后读取值?

现在我只是将数字转换为字符串二进制值:

string bit = Convert.ToString(513, 2);

有没有更有效的方法来做到这一点?我如何将值转换为位数组?

由于

4 个答案:

答案 0 :(得分:2)

var val = 513;
for(var pos=0;;pos++)
{
    var x = 1 << pos;
    if(x > val) break;
    if((val & x) == x)
    {
        Console.WriteLine(pos);
    }
}

答案 1 :(得分:1)

BitVector32类是一个实用工具类,可以帮助你解决这个问题,如果你真的想保留一点地图。

答案 2 :(得分:1)

using System.Collections;

int originalInt = 7;
byte[] bytes = BitConverter.GetBytes(originalInt);
BitArray bits = new BitArray(bytes);
int ndx = 9; //or whatever ndx you actually care about

if (bits[ndx] == true)
{
     Console.WriteLine("Bit at index {0} is on!", ndx);
}

答案 3 :(得分:0)

测试数字n中的#i位:

if ((n & (1 << i)) != 0)