如何将十进制整数列表动态转换为带0x前缀的十六进制整数列表?
解决十进制整数列表转十六进制int列表的问题
嘿,我来帮你理清这个困惑~首先得打破一个关键误区:你看到的0x前缀只是Dart里表示十六进制整数的语法写法而已,它和十进制表示的整数在内存里是完全一样的int类型。
比如你手动创建的timeSync列表:
final List<int> timeSync = [0x24, 0x0e, 0x07];
这里的0x24就是十进制的36,0x0e是14,0x07是7——也就是说,这个列表和[36,14,7]是完全等价的,传递给接收int列表的函数时效果一模一样。
回到你的问题,先提个小细节:Dart里十进制整数不能以0开头(除非是0本身),所以你写的09是无效语法,得改成9,修正后的列表是:
final List<int> nums = [13, 45, 9];
而这个列表其实已经是你想要的“带0x前缀的十六进制整数列表”的等价形式了!因为十进制13对应的十六进制是0xd,45是0x2d,9是0x9——这些数值本身和十进制的13、45、9是同一个int,不需要做任何转换,直接把nums传递给函数就可以,完全不会报错。
你之前用toRadixString()得到字符串是走偏了,因为那个方法是把int转成十六进制的字符串表示,而你需要的是int类型本身,所以完全不需要这一步。
总结一下:你根本不需要额外转换,直接使用现有的nums列表就满足需求了——因为十进制和十六进制只是同一个整数的不同写法,本质上是同一个int值。
内容的提问来源于stack exchange,提问作者GradDev




