unsigned char GenEvenParity(unsigned char b)
{
    return (b ^ (((((b ^ ((b >> 4) | (b << 4))) + 0x41) & 0x82) + 0x7E) & 0x80));
}

unsigned char GenOddParity(unsigned char b)
{
    return (b ^ (((((b ^ ((b >> 4) | (b << 4))) + 0x41) & 0x82) + 0xFE) & 0x80));
}