admin
2022-03-31 02f1c9fd2c594323f772f8e8f0f2187a285c1749
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import 'dart:typed_data';
 
class CryptoUtil {
  static List<int>? hex2List(String hexStr) {
    if (hexStr == null || hexStr.length % 2 != 0) {
      //十六进制字符串错误
      return null;
    }
 
    if (hexStr.startsWith('0x')) {
      hexStr = hexStr.substring(2);
    }
    List<int> result = List.filled(hexStr.length ~/ 2,0);
    String temp = '0123456789ABCDEF';
    for (int i = 0; i < hexStr.length; i += 2) {
      int h = temp.indexOf(hexStr.substring(i, i + 1));
      int l = temp.indexOf(hexStr.substring(i + 1, i + 2));
      result[i ~/ 2] = (h * 16 + l);
    }
    return result;
  }
 
  static String list2Hex(List<int> list) {
    List<String> results =  List.filled(list.length * 2,"");
    String temp = '0123456789ABCDEF';
    for (int i = 0; i < list.length; i++) {
      int h = list[i] ~/ 16;
      int l = list[i] % 16;
      results[i * 2] = temp.substring(h, h + 1);
      results[i * 2 + 1] = temp.substring(l, l + 1);
    }
    return results.join();
  }
}