检查存储为位串的字节是否设置在给定位置

时间:2014-09-10 12:52:05

标签: c# byte bits

我有一个表示字节或字符串的字符串,例如" 10011111"。我想将它转换为一个bitarray并检查是否在任何给定位置设置了一个位,例如位置3。 当我尝试将该字符串转换为字节时,它给了我一个     "对于无符号字节,值太大或太小。" Convert.ToByte(读取器[1]的ToString())。读者的价值[1] .ToString()=" 11111111"。

请帮忙。

3 个答案:

答案 0 :(得分:2)

您应该明确地将 base 放在 2 中:

 Byte result = Convert.ToByte(reader[1].ToString(), 2);

答案 1 :(得分:0)

试试这种方式

string x = "111111000";

var cd = x.ToCharArray();

然后你可以相应地工作

答案 2 :(得分:0)

Convert.ToByte使用的转换是使用十进制数字系统。使用Linq转换为二进制数组的简单方法是:

bool[] array = "101001010101".Select(c => c == '1').ToArray();

或者为了节省记忆:

string str = "1010101001011100";
var array = new BitArray(str.Length);
for (int i = 0; i < str.Length; i++)
{
    array[i] = str[i] == '1';
}

或者只使用字符串本身:

bool isSet = str[3] == '1';