Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2017, 20:31   #1
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию BitArray

Вопрос такой, есть много операций с битами, именно с битами, нашел такую структуру BitArray. Не пойму как она работает.

Как я понимаю воообще взятие битов на примере:
Есть строка например:

Код:
wQ2y!kLP
Я перегоняю ее в байтовый массив, тоесть получаю код каждого символа аски:

Код:
119 81 50 121 33 107 76 80
Далее каждый код перевожу из десятичного в двоичный вид, при этом если разрядность не 8, то в начале дописываю незначащие нули , получили :

Код:
0111011101010001001100100111100100100001011010110100110001010000
В принципе логика ясна, ничего сложного, но как работает BitArray??
Если я из него захочу получить биты таким кодом
Код:
            byte[] ddd = Encoding.ASCII.GetBytes("wQ2y!kLP");
            BitArray myBA11 = new BitArray(ddd);
            string test = "";
            foreach (bool b in myBA11)
                test += (b ? 1 : 0);
то он мне вернет на выходе

Код:
1110111010001010010011001001111010000100110101100011001000001010
А это ввообще не правильно, получается нельзя чтоли его для получения бит использовать? как то неверно он работает или я чет не понимаю, подскажите?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 08.04.2017, 00:07   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Просто он биты выводит, начиная с младшего бита в каждом байте.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.04.2017, 10:02   #3
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

А можно как то сделать чтобы бы он выводил как мне нужено, тоесть как ручками я сделал ?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 08.04.2017, 22:18   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Не пишу на Шарпе. В интернете предлагают с помощью таблицы (на 256 элементов) или функции переворачивать биты в байте, а затем заносить их в bitarray. Вы уверены, что вам так важен порядок? Это ведь не мешает проводить сами операции над битами.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.04.2017, 19:24   #5
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Порядок мне важен при сравнении вычислений, что я сделаю ручками, чтобы то же выдавала программа, ибо потом дальше когда пойдешь проблематичнее будет найти ошибку
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 09.04.2017, 22:38   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Если это нужно только для отладки, то можно написать функцию-обертку, которая будет разворачивать данные (правильно формировать строку из массива) для легкого восприятия. Внутреннее представление для работы не обязано быть удобным для восприятия.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц