SHT4X
30 строк · 895.0 Байт
1"""
2MIT License
3Copyright (c) 2022 Roman Shevchik
4
5реализация вычисление CRC
68 бит
7полином 0x31 (x^8 + x^5 + x^4 + 1)
8начальное значение 0xFF
9отражение входа: нет
10отражение выхода: нет
11завершающий XOR: нет
12
13Примеры CRC-8:
14Входная последовательность: 0x01 0x02 0x03
15CRC-8: 0x87
16Входная последовательность: 0 1 2 3 4 5 6 7 8 9
17CRC-8: 0x52"""
18
19
20def crc8(sequence: bytes, polynomial: int, init_value: int = 0x00, final_xor = 0x00):
21mask = 0xFF
22crc = init_value & mask
23for item in sequence:
24crc ^= item & mask
25for _ in range(8):
26if crc & 0x80:
27crc = mask & ((crc << 1) ^ polynomial)
28else:
29crc = mask & (crc << 1)
30return crc ^ final_xor
31