我需要将一个由 8 个字符的十六进制子字符串组成的字符串转换为一个整数列表。
例如,我可能有字符串
001479B70054DB6E001475B3
Run Code Online (Sandbox Code Playgroud)
它由以下子串组成
001479B7 // 1341879 decimal
0054DB6E // 5561198 decimal
001475B3 // 1340851 decimal
Run Code Online (Sandbox Code Playgroud)
我目前正在使用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));
}
Run Code Online (Sandbox Code Playgroud)
有没有更有效的方法来做到这一点?
小智 17
您可以使用 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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7379 次 |
| 最近记录: |