我有这段代码......
string rand = RandomString(16);
byte[] bytes = Encoding.ASCII.GetBytes(rand);
BitArray b = new BitArray(bytes);
代码正确地将字符串转换为Bitarray。现在我需要将BitArray转换为0和1 我需要用零和一些变量进行操作(即,不用于表示perposes [没有左零填充])。有人可以帮帮我吗?
答案 0 :(得分:1)
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)
用于处理各个值。
修改强>
您可以使用任何按位操作单独操作值:
bool xorValue = bool1 ^ bool2;
bitArray.Set(index, xorValue);
您当然可以拥有BitArray
的集合:
BitArray[] arrays = new BitArray[2];
...
arrays[0].And(arrays[1]); // And'ing two BitArray's
答案 1 :(得分:0)
如果要在Byte[]
上执行按位操作,可以使用BigInteger
类。
BigInteger
类构造函数public BigInteger(byte[] value)
将其转换为0和1。对其执行按位操作。
string rand = "ssrpcgg4b3c";
string rand1 = "uqb1idvly03";
byte[] bytes = Encoding.ASCII.GetBytes(rand);
byte[] bytes1 = Encoding.ASCII.GetBytes(rand1);
BigInteger b = new BigInteger(bytes);
BigInteger b1 = new BigInteger(bytes1);
BigInteger result = b & b1;
BigInteger类支持BitWiseAnd和BitWiseOr
有用的链接:BigInteger class
答案 2 :(得分:0)
您可以从integer
获得0和1 BitArray
数组。
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]);
}