首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从BitArray到0和1

从BitArray到0和1
EN

Stack Overflow用户
提问于 2018-03-21 05:02:34
回答 3查看 1.5K关注 0票数 1

我有这段代码。

代码语言:javascript
复制
string rand = RandomString(16);
byte[] bytes = Encoding.ASCII.GetBytes(rand);
BitArray b = new BitArray(bytes);

代码正确地将字符串转换为位数组。现在我需要将BitArray转换为0和1。

我需要使用零和1变量进行操作(即没有左零填充的表示)。有人能帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-21 05:44:28

BitArray类是在按位操作的情况下使用的理想类。如果要执行布尔操作,您可能不希望将BitArray转换为bool[]或任何其他类型。它有效地存储bool值(每个值为1位),并为您提供按位操作的必要方法。

BitArray.And(BitArray other)BitArray.Or(BitArray other)BitArray.Xor(BitArray other)用于布尔操作,BitArray.Set(int index, bool value)BitArray.Get(int index)用于处理单个值。

编辑

您可以使用任何按位操作来单独操作值:

代码语言:javascript
复制
bool xorValue = bool1 ^ bool2;
bitArray.Set(index, xorValue);

当然,您可以拥有一个BitArray的集合:

代码语言:javascript
复制
BitArray[] arrays = new BitArray[2];
...
arrays[0].And(arrays[1]); // And'ing two BitArray's
票数 1
EN

Stack Overflow用户

发布于 2018-03-21 05:14:31

如果要在上按位执行操作,可以使用BigInteger类。

  1. 使用BigInteger类构造函数public BigInteger(byte[] value)将其转换为0和1。
  2. 对其执行按位操作。 字符串rand = "ssrpcgg4b3c";字符串rand1 = "uqb1idvly03";byte[]字节= Encoding.ASCII.GetBytes(rand);byte[] bytes1 = Encoding.ASCII.GetBytes(rand1);BigInteger b=新BigInteger (字节);BigInteger b1 =新BigInteger(bytes1);BigInteger结果=b& b1;

BigInteger类支持BitWiseAnd和BitWiseOr

有用的链接:BigInteger类

BigInteger类中的算子

票数 0
EN

Stack Overflow用户

发布于 2018-03-21 05:51:54

您可以从integer获得0和1个BitArray数组。

代码语言:javascript
复制
string rand = "yiyiuyiyuiyi";
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(rand);
BitArray b = new BitArray(bytes);
                
int[] numbers = new int [b.Count];
                
for(int i = 0; i<b.Count ; i++)
{
    numbers[i] = b[i] ? 1 : 0;
    Console.WriteLine(b[i] + " - " + numbers[i]);
}

小提琴

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49398526

复制
相关文章

相似问题

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