在 Dart 中将任意长的十六进制字符串转换为数字?

2023-12-25

我需要将 8 个字符的十六进制子字符串转换为整数列表。

例如,我可能有字符串

001479B70054DB6E001475B3

由以下子字符串组成

001479B7    // 1341879 decimal
0054DB6E    // 5561198 decimal
001475B3    // 1340851 decimal

我目前正在使用convert.hex首先将字符串转换为 4 个整数的列表(因为convert.hex仅处理解析 2 个字符的十六进制字符串),然后将它们相加/相乘:

String tmp;
for(int i=0; i<=myHexString.length-8; i+=8){
  tmp = myHexString.substring(i, i+8);
  List<int> ints = hex.decode(tmp);
  int dec = ints[3]+(ints[2]*256+(ints[1]*65536)+(ints[0]*16777216));
}

有没有更有效的方法来做到这一点?


您可以使用int.parse('001479B7', radix: 16);

https://api.dartlang.org/stable/2.4.1/dart-core/int/parse.html https://api.dartlang.org/stable/2.4.1/dart-core/int/parse.html

所以你的代码将如下所示:

void main() {
  final fullString = '001479B70054DB6E001475B3';

  for (int i = 0; i <= fullString.length - 8; i += 8) {
    final hex = fullString.substring(i, i + 8);

    final number = int.parse(hex, radix: 16);
    print(number);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Dart 中将任意长的十六进制字符串转换为数字? 的相关文章

随机推荐