C# 数字到 BitMask32 到值

发布于 2024-11-03 19:06:43 字数 258 浏览 0 评论 0原文

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

例如 513 = 0 和 9

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

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

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

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

谢谢

I am getting a number such as 513. I need to convert this number to a bitmask32 then I need to count where each 1 bit is in the array

For Example
513 = 0 and 9

How would I go about converting the number to a bit32 then reading the values?

Right now I am just converting the number to a string binary value:

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

Would there be a more effective way to do this? How would I convert the value to a bit array?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

柳若烟 2024-11-10 19:06:43
var val = 513;
for(var pos=0;;pos++)
{
    var x = 1 << pos;
    if(x > val) break;
    if((val & x) == x)
    {
        Console.WriteLine(pos);
    }
}
var val = 513;
for(var pos=0;;pos++)
{
    var x = 1 << pos;
    if(x > val) break;
    if((val & x) == x)
    {
        Console.WriteLine(pos);
    }
}
祁梦 2024-11-10 19:06:43

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

The BitVector32 class is an utility class that can help you out for this, if you really want to keep a bit map.

猥︴琐丶欲为 2024-11-10 19:06:43
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);
}
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);
}
青瓷清茶倾城歌 2024-11-10 19:06:43

要测试编号 n 中的位 #i:

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

To test bit #i in number n:

if ((n & (1 << i)) != 0)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文