我需要将 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
因此您的代码将如下所示:
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);
}
}
关于flutter - 将任意长的十六进制字符串转换为 Dart 中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57675661/