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