Проверка значения определённого бита в байте - C#
Формулировка задачи:
Добрый день! Программа по СОМ порту получает телеграмму которую надо расшифровать.
В первых двух битах третьего байта содержатся флаги работы и аварии механизма. Как можно проверить значение соответствующего бита (0, 1)?
Вот как я делал это на СИ:
C# такую лексему не позволяет скомпилировать
unsigned char Buffer[32]; if (Buffer[2]&0x01) //первый бит { //// } if (Buffer[2]&0x02) //второй бит { //// }
Решение задачи: «Проверка значения определённого бита в байте»
textual
Листинг программы
/// <summary> /// Возвращаем значение указанного бита. /// </summary> /// <param name="arrByte">Массив байт содержащий искомый бит.</param> /// <param name="intNumberBite">Номер искомого бита.</param> /// <returns></returns> static public bool arrByte2Bite( byte[] arrByte, int intNumberBite) { if (arrByte.Length*8<intNumberBite) return false; //Вернём false если номер бита вышел за приделы массива int intNumByte = intNumberBite / 8; // Уточним номер байта int intNumBite = intNumberBite % 8; // Уточним номер бита в бите return (((arrByte[intNumByte] >> intNumBite) & 1)==1); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д