diff --git a/lib/main.dart b/lib/main.dart index d4898717..b6c301cc 100755 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,6 +2,9 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; +import 'package:crc/crc.dart'; +import 'package:crclib/catalog.dart'; +import 'package:crypto/crypto.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_bugly/flutter_bugly.dart'; @@ -105,3 +108,54 @@ 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 table = List.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; +} + */