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);
是否有更有效的方法来做到这一点?如何将值转换为位数组?
谢谢
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)