fix:完善crc32计算校验
This commit is contained in:
parent
6c96814a68
commit
860c0e3150
@ -108,54 +108,3 @@ void findChineseCharacters(Directory directory) {
|
|||||||
bool hasChineseCharacters(String input) {
|
bool hasChineseCharacters(String input) {
|
||||||
return RegExp(r'[\u4e00-\u9fa5]').hasMatch(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;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user