Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Байты в биты |
Автор: arkonst 28.11.2007, 16:00 |
Здравствуйте коллеги! Подскажите пожалуйста,каким образом можно байт разложить на составляющие биты. 1байт в 8 бит??? допустим у меня есть число 7 в 8-битном формате 00000111, каким образом можно было бы с помощью языка C# вытащить эти три единицы чтобы затем их использовать ... Заранее спасибо за ответ. |
Автор: nikakoi 28.11.2007, 16:09 |
Побитовыми операторами >> и << пользоваться не пробовал?![]() |
Автор: 1stain 28.11.2007, 16:12 |
поиском пользоваццо не прбовал? http://forum.vingrad.ru/act-Search/CODE/show/searchid-4471d38762be1e149e9061462b3dac93/search_in-posts/result_type/topics/flag/search/highlite/%25D0%25B1%25D0%25B0%25D0%25B9%25D1%2582%25D1%258B+%25D0%25B2+%25D0%25B1%25D0%25B8%25D1%2582%25D1%258B/index.html |
Автор: arkonst 28.11.2007, 16:13 |
да в общем то пробовал....но эти ж операторы сдвигают биты туда сюда....а как именно разложить байт в биты...а точнее из 8 бит вытянуть нужные и затем использовать...я новичок в программировании поэтому и спрашиваю....и жду ответа а не стеба |
Автор: nikakoi 28.11.2007, 16:55 | ||
Ну кажется вот так можно понять где единицы и где нули=) Добавлено через 1 минуту и 10 секунд Если я конечно ничего не напутал... Что вполне вероятно, ибо сам довольно недавно на C# пишу) а как ты их использовать хочешь?) |
Автор: arkonst 28.11.2007, 17:10 |
Я пишу программу для работы с устройством в modbus протоколе....так вот...у меня есть функции для чтения holding и input(байты-аналоговые величины)), а вот для чтения coil и discret(биты-дискретные ) нет. В modbus есть такая функция - 01 она для чтения Coil. ЕЕ я и пытаюсь реализовать, на основе функции для чтения holding (03) , в этой функции используються операции для работы с байтами. А мне как раз чтобы получить состояния Coil нужно сначала вытащить байт из сообщения modbus, затем разложить его на составляющие биты....они и будут являться битами состояния выходов устройства, а затем их уже вывести на форму,типа SCADA получаеться...только для одного устройства... |
Автор: 1stain 28.11.2007, 17:50 | ||
arkonst, чесно сказать мало что понял, дурак наверное ![]() могу предложить такой вариант: не заморачиваться с >> & <<, а преобразовывать байт в экземпляр перечисления с атрибутом [Flags] проще это показать на примере:
з.ы. лучше задать экземплярам перечисления соответствующие имена битов протокола |
Автор: arkonst 29.11.2007, 10:32 |
Хорошо...тогда как используя побитовый оператор << >> можно выделить нужный бит....например из 00000111 выделить предпоследнюю единицу,?? желательно на примере. |
Автор: Freak_FB 24.4.2008, 11:15 | ||
Не понял, зачем [Flags]... А как насчёт разбить твой байт в BitArray ? http://forum.vingrad.ru/forum/topic-206044/kw-bitarray-byte/hl/bitarray/index.html...
Получаем потом каждый бит в виде булевого значения true/false. Типа ba[0] и так дальше. |
Автор: mr.DUDA 24.4.2008, 12:49 |
Freak_FB, теме полгода уже. ![]() |
Автор: Freak_FB 24.4.2008, 12:50 |
Блин... не увидел дату поста... туплю.... |