# Function to calculate CRC16 def crc16_with_input(poly, init_value=0xFFFF): # Get input from the user data_input = input("Введите байтовые данные через пробел (в формате 0xXX): ") # Parse input into a list of integers try: data = [int(byte, 16) for byte in data_input.split()] except ValueError: print("Ошибка: введите данные в правильном формате (например, 0xD5 0x02 0x04).") return # Calculate CRC16 crc = init_value for byte in data: crc ^= byte for _ in range(8): if crc & 0x0001: crc = (crc >> 1) ^ poly else: crc >>= 1 # Format the result as low byte first crc_low_first = f"{crc & 0xFF:02X}{(crc >> 8) & 0xFF:02X}" print(f"CRC16 (low byte first): {crc_low_first}") # Run the function crc16_with_input(0xA001)