C# Number to BitMask32 to Values

本文关键字:to Values BitMask32 Number | 更新日期: 2023-09-27 17:53:01

我得到一个数字,如513。我需要将这个数字转换为bitmask32然后我需要计算数组

中每个1位的位置例如

513 = 0 and 9

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

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

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

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

谢谢

C# Number to BitMask32 to Values

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

BitVector32类是一个实用程序类,可以帮助你解决这个问题,如果你真的想保持一个位映射

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

测试编号为n的位#i:

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