19 lines
428 B
Dart
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();
|
|
} |