Проверьте, установлен ли байт, хранящийся в виде строки битов, в заданной позиции

У меня есть строка, представляющая байт или строку битов, например «10011111». Я хочу преобразовать его в битовый массив и проверить, установлен ли бит в любой заданной позиции, например, в позиции 3. Когда я пытаюсь преобразовать эту строку в байт, она дает мне «значение слишком велико или слишком мало для беззнакового байта. " Convert.ToByte(считыватель[1].ToString()). Значение читателя[1].ToString() = "11111111".

Пожалуйста помоги.


person Lucky Luke2    schedule 10.09.2014    source источник


Ответы (3)


Вы должны указать base явно, что в вашем случае равно 2:

 Byte result = Convert.ToByte(reader[1].ToString(), 2);
person Dmitry Bychenko    schedule 10.09.2014
comment
@Дмитрий Быченко аааа Спасибо большое. - person Lucky Luke2; 10.09.2014

попробуй так

string x = "111111000";

var cd = x.ToCharArray();

и тогда вы можете работать соответственно

person Ajay Kumar    schedule 10.09.2014

Преобразование, используемое 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';
person Bas    schedule 10.09.2014