Flutter中如何将整数列表转换为十六进制列表?
解决方案
错误原因很明确:toRadixString(16)是Dart中int类型专属方法,你之前尝试直接在List<int>对象上调用它,自然会报错。你代码里的map遍历逻辑方向是对的,以下是具体修正方案:
基础版(直接转换)
如果只需要基础的十六进制字符串(比如10转为"a",255转为"ff"),直接对列表内每个int元素调用方法即可:
..value = value.map((int num) => num.toRadixString(16)).toList();
优化版(标准两位格式)
如果需要符合规范的两位十六进制格式(比如10转为"0A"或"0a",避免单字符),可以用字符串补全处理:
// 生成大写两位十六进制字符串列表 ..value = value.map((int num) => num.toRadixString(16).padLeft(2, '0').toUpperCase()).toList(); // 生成小写两位十六进制字符串列表 ..value = value.map((int num) => num.toRadixString(16).padLeft(2, '0').toLowerCase()).toList();
额外注意
如果protos.WriteCharacteristicRequest的value字段实际需要的是Uint8List而非字符串列表,那你可能误解了需求——此时不需要转换十六进制字符串,直接传入原整数列表即可(Uint8List是List<int>的子类):
..value = Uint8List.fromList(value);
内容的提问来源于stack exchange,提问作者syrine
相关产品推荐
相关产品推荐

