environment_monitoring_app/lib/bluetooth/utils/crc_calculator.dart
2025-08-04 15:11:24 +08:00

19 lines
428 B
Dart

import 'dart:typed_data';
String computeCrc16Ccitt(Uint8List bytes) {
int crc = 0xFFFF;
int polynomial = 0x1021;
for (int b in bytes) {
for (int i = 0; i < 8; i++) {
bool bit = ((b >> (7 - i) & 1) == 1);
bool c15 = ((crc >> 15 & 1) == 1);
crc <<= 1;
if (c15 ^ bit) {
crc ^= polynomial;
}
}
}
crc &= 0xffff;
return crc.toRadixString(16).padLeft(4, '0').toUpperCase();
}