Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C# необходимо сроку вида "010010101101" преобразовать в BitArray или bool[], подскажите идею как это реализовать.

Pavel.Z Знаток (498), закрыт 6 лет назад
Число знаков в каждой строке меняется.
Convert.ToByte(string) работает в случае если sting = "0", "1". Но не работает в других.
string str = "010010101101"
byte byt = Convert.ToByte(str[0]);
bool bol = Convert.ToBoolean(byt);
//str[0] = 0 byt = 48 bol = True так как str[0] это char = '0' и его юникод 48 в десятичной системе.
Лучший ответ
East RX Просветленный (24384) 6 лет назад
bool[] b = new bool[str.Length];
for (int i = 0; i < str.Length; i++) b[i] = str[i] == '1';

BitArray ba = new BitArray(str.Length);
for (int i = 0; i < str.Length; i++) ba.Set(i, str[i] == '1');
Остальные ответы
IRQ Оракул (52925) 6 лет назад
Тупо по символам перебрать строку не судьба?
Pavel.ZЗнаток (498) 6 лет назад
и как символ '0' превратить в false? Сравнением? конструкция громоздкая получается.
for (int i = 0; i < str.Length; i++) {
if (str[i] == '0') bol[i] = false;
else bol[i] = true; }
хотя...
IRQ Оракул (52925) Да тут миллион способов есть. А с учётом того, что строка реализует IEnumerable, то на LINQ вообще можно написать так: var weekdaysEnabled = weekdayFrequency.Select(chr => chr == '1').ToArray(); Да и просто погуглить по строке "C# convert string to bool array", куча ссылок на тот же stackoverflow.
Похожие вопросы