flutter-16进制与10进制之间的转化

467 阅读1分钟

flutter 在使用难免会碰到进制转换的问题,不仅仅是与硬件交互,可能普通的加密都会用到转化16进制的问题,另外也会有其他地方会用到,因此了解是非常需要的

用 10 进制转化成 16 进制的时候,是怎么转换的呢?

数字保存的都一样,因此字符串转化数字都一样,直接使用字符串转化数字的方法,不同的是字符串,也就是数字转化1016进制字符串,例如:转化 16进制是通过跟16相除,然后对应0~f,就是代码上需要自己写

因此,为了给开发者便利,系统给我们的提供了一个方法,叫做 toRadixString,可以将数字转化成 16 进制字符串,也可以转化成 10 进制等,使用如下所示(方法有一个参数,表示 几进制

//将数字转化成 16进制
20.toRadixString(16); // 14
可以看到转化的过程高位为0则会省略,不会自动对齐
4.toRadixString(16); //4  

转化成10进制,就不多说了,默认的都有这个功能
10.toRadixString(10); //10 

练习:将一个 int 类型的 字节数组 转化成字符串数组

String getHexString(List<int> ints) {
  return ints.map((e) {
    //toRadixString 转化 成 16 进制
    String text = e.toRadixString(16);
    //不够两位的补全两位
    return text.length > 1 ? text : '0$text';
  }).join('');
}