我得到的数字如513.我需要将此数字转换为bitmask32然后我需要计算每个1位在数组中的位置
例如 513 = 0和9
如何将数字转换为bit32然后读取值?
现在我只是将数字转换为字符串二进制值:
string bit = Convert.ToString(513, 2);
有没有更有效的方法来做到这一点?我如何将值转换为位数组?
由于
答案 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)