首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BitMask32 to Values的C#编号

BitMask32 to Values的C#编号
EN

Stack Overflow用户
提问于 2011-04-25 21:32:59
回答 4查看 1.3K关注 0票数 1

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

例如513 =0和9

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

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

代码语言:javascript
复制
string bit = Convert.ToString(513, 2);

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

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-25 21:40:10

代码语言:javascript
复制
var val = 513;
for(var pos=0;;pos++)
{
    var x = 1 << pos;
    if(x > val) break;
    if((val & x) == x)
    {
        Console.WriteLine(pos);
    }
}
票数 2
EN

Stack Overflow用户

发布于 2011-04-25 21:46:09

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

票数 1
EN

Stack Overflow用户

发布于 2011-04-25 22:20:49

代码语言:javascript
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5778823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档