26 std::array<uint16_t, 2> crc{};
27 for (
size_t i = 0; i < 12; ++i) {
28 uint16_t&
value = crc[i % 2];
29 value ^=
static_cast<uint16_t
>(
static_cast<uint8_t
>(
bytes[i]) << 8);
30 for (
int bit = 0; bit < 8; ++bit) {
32 static_cast<uint16_t
>((
value << 1) ^ ((
value & 0x8000) ? 0x1021 : 0));
35 return (
static_cast<uint32_t
>(crc[1]) << 16) | crc[0];