def _crc16_ccitt_update(crc, byte):
    """CRC-16-CCITT (x^16 + x^12 + x^5 + 1)"""
    if type(byte) != int:
        byte = ord(byte)
    byte ^= crc & 255
    byte ^= byte << 4 & 255
    ret = byte << 8 | crc >> 8 & 255
    ret ^= byte >> 4
    ret ^= byte << 3
    return ret
