fix:完善crc32计算校验

This commit is contained in:
liyi 2024-12-04 17:26:33 +08:00
parent 6c96814a68
commit 860c0e3150

View File

@ -108,54 +108,3 @@ void findChineseCharacters(Directory directory) {
bool hasChineseCharacters(String input) {
return RegExp(r'[\u4e00-\u9fa5]').hasMatch(input);
}
//ToDo:
/**
* CRC16
void calculateCrc16() {
const String payload = 'hello';
// Uint8List
final Uint8List uint8Payload = stringToUint8List(payload);
// 使 CRC32
final int crc32Value = crc32Uint16(uint8Payload);
print('************ input 为 "$payload" 的 CRC32 值为 $crc32Value');
}
// Uint8List
Uint8List stringToUint8List(String input) {
return Uint8List.fromList(utf8.encode(input));
}
// CRC32
int crc32Uint16(Uint8List data) {
const int polynomial = 0xD5828281;
// CRC32
final List<int> table = List<int>.generate(256, (i) {
int crc = i;
for (int j = 0; j < 8; j++) {
if ((crc & 1) != 0) {
crc = (crc >> 1) ^ polynomial;
} else {
crc >>= 1;
}
}
return crc;
});
// CRC32
int crc = 0xFFFFFFFF;
for (final int byte in data) {
crc = (crc >> 8) ^ table[(crc ^ byte) & 0xFF];
}
crc ^= 0xFFFFFFFF;
// CRC32 16
return crc & 0xFFFF;
}
*/