code: def crc_ccitt(data):
      # type: (bytes) -> int
      '''
      Calculate the CRC over a range of bytes using the CCITT polynomial.
  
      Parameters:
       data - The array of bytes to calculate the CRC over.
      Returns:
       The CCITT CRC of the data.
      '''
      crc = 0
      if not have_py_3:
          for x in data:
              crc = crc_ccitt_table[ord(x) ^ ((crc >> 8) & 0xFF)] ^ ((crc << 8) & 0xFF00)  # type: ignore
      else:
          mv = memoryview(data)
          for x in mv.tobytes():
              crc = crc_ccitt_table[x ^ ((crc >> 8) & 0xFF)] ^ ((crc << 8) & 0xFF00)
  
      return crf crc_ccitt(data):
      # type: (bytes) -> int
      '''
      Calculate the CRC over a range of bytes using the CCITT polynomial.
  
      Parameters:
       data - The array of bytes to calculate the CRC over.
      Returns:
       The CCITT CRC of the data.
      '''
      crc = 0
      if not have_py_3:
          for x in data:
              crc = crc_ccitt_table[ord(x) ^ ((crc >> 8) & 0xFF)] ^ ((crc << 8) & 0xFF00)  # type: ignore
      else:
          mv = memoryview(data)
          for x in mv.tobytes():
              crc = crc_ccitt_table[x ^ ((crc >> 8) & 0xFF)] ^ ((crc << 8) & 0xFF00)
  
      return crc
docs: Calculate the CRC over a range of bytes using the CCITT polynomial.
  
      Parameters:
       data - The array of bytes to calculate the CRC over.
      Returns:
       The CCITT CRC of the data.