![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
arkonst |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 31.10.2007 Репутация: 1 Всего: 1 |
Здравствуйте коллеги!
Подскажите пожалуйста,каким образом можно байт разложить на составляющие биты. 1байт в 8 бит??? допустим у меня есть число 7 в 8-битном формате 00000111, каким образом можно было бы с помощью языка C# вытащить эти три единицы чтобы затем их использовать ... Заранее спасибо за ответ. |
|||
|
||||
nikakoi |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Побитовыми операторами >> и << пользоваться не пробовал?
![]() |
|||
|
||||
1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 8 Всего: 40 |
-------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
arkonst |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 31.10.2007 Репутация: 1 Всего: 1 |
да в общем то пробовал....но эти ж операторы сдвигают биты туда сюда....а как именно разложить байт в биты...а точнее из 8 бит вытянуть нужные и затем использовать...я новичок в программировании поэтому и спрашиваю....и жду ответа а не стеба
|
|||
|
||||
nikakoi |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Ну кажется вот так можно понять где единицы и где нули=) Добавлено через 1 минуту и 10 секунд Если я конечно ничего не напутал... Что вполне вероятно, ибо сам довольно недавно на C# пишу) а как ты их использовать хочешь?) |
|||
|
||||
arkonst |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 31.10.2007 Репутация: 1 Всего: 1 |
Я пишу программу для работы с устройством в modbus протоколе....так вот...у меня есть функции для чтения holding и input(байты-аналоговые величины)), а вот для чтения coil и discret(биты-дискретные ) нет.
В modbus есть такая функция - 01 она для чтения Coil. ЕЕ я и пытаюсь реализовать, на основе функции для чтения holding (03) , в этой функции используються операции для работы с байтами. А мне как раз чтобы получить состояния Coil нужно сначала вытащить байт из сообщения modbus, затем разложить его на составляющие биты....они и будут являться битами состояния выходов устройства, а затем их уже вывести на форму,типа SCADA получаеться...только для одного устройства... |
|||
|
||||
1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 8 Всего: 40 |
arkonst, чесно сказать мало что понял, дурак наверное
![]() могу предложить такой вариант: не заморачиваться с >> & <<, а преобразовывать байт в экземпляр перечисления с атрибутом [Flags] проще это показать на примере:
з.ы. лучше задать экземплярам перечисления соответствующие имена битов протокола -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
arkonst |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 31.10.2007 Репутация: 1 Всего: 1 |
Хорошо...тогда как используя побитовый оператор << >> можно выделить нужный бит....например из 00000111 выделить предпоследнюю единицу,?? желательно на примере.
|
|||
|
||||
Freak_FB |
|
|||
![]() Ктулхувед ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 13.10.2006 Репутация: 1 Всего: 4 |
Не понял, зачем [Flags]...
А как насчёт разбить твой байт в BitArray ? Тут...
Получаем потом каждый бит в виде булевого значения true/false. Типа ba[0] и так дальше. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Freak_FB, теме полгода уже.
![]() -------------------- ![]() |
|||
|
||||
Freak_FB |
|
|||
![]() Ктулхувед ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 13.10.2006 Репутация: 1 Всего: 4 |
Блин... не увидел дату поста... туплю....
Это сообщение отредактировал(а) Freak_FB - 24.4.2008, 12:56 |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Я вообще не понял о каком новом топике речь и зачем поднимать пыльные темы. Кому нужен ответ на похожий вопрос, найдёт его поиском или по быстрым ссылкам. -------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |