Проверка значения определённого бита в байте - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Программа по СОМ порту получает телеграмму которую надо расшифровать. В первых двух битах третьего байта содержатся флаги работы и аварии механизма. Как можно проверить значение соответствующего бита (0, 1)? Вот как я делал это на СИ:
unsigned char Buffer[32];
if (Buffer[2]&0x01) //первый бит
{
 ////
}
if (Buffer[2]&0x02) //второй бит
{
 ////
}
C# такую лексему не позволяет скомпилировать

Решение задачи: «Проверка значения определённого бита в байте»

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);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы