Проверка значения определённого бита в байте - 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);
}