1

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

例如 513 = 0 和 9

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

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

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

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

谢谢

4

4 回答 4

2
var val = 513;
for(var pos=0;;pos++)
{
    var x = 1 << pos;
    if(x > val) break;
    if((val & x) == x)
    {
        Console.WriteLine(pos);
    }
}
于 2011-04-25T13:40:09.527 回答
1

如果您真的想保留位图,BitVector32 类是一个可以帮助您解决此问题的实用程序类

于 2011-04-25T13:46:09.360 回答
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);
}
于 2011-04-25T14:20:49.333 回答
0

要测试编号中的 #i 位n

if ((n & (1 << i)) != 0)
于 2011-04-25T13:36:16.127 回答