The problem is that your if statement is computing a numeric value with the bit-wise AND operator. c# does not implicitly convert integer zero/non-zero to boolean false/true.
Just compare the result of the AND against zero:
if((buffer[6] & 0x01) != 0)
{
}
If you needed to check for multiple bits at the same time, compare against the bitmask:
if((buffer[6] & 0x81) == 0x81)
{
}