相关文章推荐
乖乖的韭菜  ·  7 Papers & Radios | ...·  6 月前    · 
愤怒的佛珠  ·  在资源文件中动态替换字符串·  1 年前    · 
仗义的花生  ·  【第九十六期】AI+药物研发领域一周资讯 - 知乎·  1 年前    · 
冷冷的春卷  ·  基于机器学习的锂离子电池容量估计使用多通道充 ...·  1 年前    · 
踏实的匕首  ·  vscode选中一行快捷键-掘金·  1 年前    · 
Code  ›  Dart基础:进制转换、int与string互转_dart string转int_旺仔大牛的博客
string dart ascii码 十六进制转换
https://blog.csdn.net/adojayfan/article/details/119680191
侠义非凡的甘蔗
1 年前
  • 进制转换
    • 转二进制
    • 转八进制
    • 转十进制
    • 转十六进制
  • ASCII码与String互转
    • ASCII码转String
    • String转ASCII码
  • String与int互转
    • int转String
    • String转int
      • parse和tryParse区别
      • parse
        • 使用onError
      • tryParse
      /// Converts [this] to a string representation in the given [radix].
      /// In the string representation, lower-case letters are used for digits above
      /// '9', with 'a' being 10 an 'z' being 35.
      /// The [radix] argument must be an integer in the range 2 to 36.
      String toRadixString(int radix);
      

      返回值是一个代表当前进制的字符串。

      radix 代表要转换的进制,从2到36,代表能转换为2进制到36进制。如果传入的进制不在这个范围,会直接报异常。

      比如转换为37进制。

      20.toRadixString(37);
      

      运行会直接报以下异常,提示传入的进度不在2到36之间。

      Unhandled exception:
      RangeError (radix): Invalid value: Not in inclusive range 2..36: 37
      #0      int.toRadixString (dart:core-patch/integers.dart:331:7)
      #1      main (package:flutter_app/demo.dart:5:20)
      #2      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:283:19)
      #3      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)
      
      /// 申明10进制数
      int num = 20;
      /// 传入2
      var binary = num.toRadixString(2);
      print("20的二进制为 $binary")
      // 打印结果: 20的二进制为 10100
      
      /// 申明10进制数
      int num = 20;
      /// 传入8
      var binary = num.toRadixString(8);
      print("20的八进制为 $binary")
      // 打印结果: 20的八进制为 24
      
      /// 申明16进制数
      int num = 0xd1;
      /// 传入10
      var binary = num.toRadixString(10);
      print("20的十进制为 $binary")
      // 打印结果: 20的十进制为 209
       

      其实其他进制不需要转换为10进制,因为在打印或者跟10进制数运算时,Dart会自动转换为10进制。

      转十六进制

      /// 申明16进制数
      int num = 20;
      /// 传入10
      var binary = num.toRadixString(16);
      print("20的十六进制为 $binary")
      // 打印结果: 20的十六进制为 14
      

      ASCII码与String互转

      ASCII码转String

      单个ASCII码转换成字符

      //char = "a"
      String char = String.fromCharCode(97);
      

      ASCII码数组转换成字符串

      // str = "Hello World"
      String str = String.fromCharCodes([72,101,108,108,111,32,87,111,114,108,100]);
      

      String转ASCII码

      单个字符转换成ASCII码

      /// asciiNum = 97
      int asciiNum =“a”.codeUnitAt(0);
      

      字符串转换成一个ASCII码数组

      /// asciiList = [72,101,108,108,111,32,87,111,114,108,100]
      List<int> asciiList =“Hello World”.codeUnits;
      

      String与int互转

      int转String

      直接使用toString()

      int num = 20;
      var s = num.toString();
      

      String转int

      使用int的parse或tryParse方法

      external static int parse(String source,
            {int? radix, @deprecated int onError(String source)?});
      external static int? tryParse(String source, {int? radix});
      

      radix是要转换的进制,默认为将String转换为10进制数。

      String s = "20";
      var i = int.parse(s);
      /// 两者都可以
      // var i = int.tryParse(s);
      

      parse和tryParse区别

      区别是遇到转换异常时的处理方式。

      parse

      使用parse的转换异常需要在onError回调中处理。如果onError为null,会直接造成程序崩溃。

      String s = "20";
      var i = int.parse(s, radix: 2);
      

      比如将20的字符串转换为2进制形式的int,如果没有传入onError,会报以下异常信息。

      Unhandled exception:
      FormatException: Invalid radix-2 number (at character 1)
      #0      int._throwFormatException (dart:core-patch/integers_patch.dart:132:5)
      #1      int._parseRadix (dart:core-patch/integers_patch.dart:143:16)
      #2      int._parse (dart:core-patch/integers_patch.dart:101:12)
      #3      int.parse (dart:core-patch/integers_patch.dart:64:12)
      #4      main (package:flutter_app/demo.dart:4:15)
      #5      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:283:19)
      #6      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)
      

      使用onError

      String s = "20";
      var i = int.parse(s, radix: 2,onError: (source){
        print("需要转换的字符串 $source");
        /// 返回一个int。
        return -1;
      print("转换结果为 $i");
      if (i == -1) {
        print("转换失败");
      

      int onError(String source)

      source是原始字符串。

      返回值是一个指定的int值,转换后可以检查结果是否是这个值,来判断是否转换成功。

      tryParse

      官方已经将onError淘汰了,因为处理的方式不够优雅,而且使用时忘记使用onError导致程序崩溃那就得不偿失了。

      对于不确定是否能正常转换的字符串,推荐使用tryParse进行转换。不需要处理异常,只需要判断返回值是否为null即可。

      String s = "20";
      var i = int.tryParse(s, radix: 2);
      print("转换结果为 $i");
      // 值为null,代表转换失败。
      if (i == null) {
        print("转换失败");
        return;
                                          在Flutter中,异或运算可以通过“^”运算符来实现。异或运算是一种逻辑运算符,当两个操作数的对应位不同时,结果为1,否则结果为0。在这个例子中,a ^ b运算的结果为2,因为5和3的二进制表示中,只有最后一位不同。因此,最终的结果是二进制的010,也就是十进制的2。
       该包使用解析器将XML数据解析为解析树。
       确切的转换规则可以在下面找到。
       Parker约定是从XML到JSON的有损但精简的转换,非常适合对不需要属性和名称空间信息的书籍,记录等的集合进行轻量级XML解析。
       Badgerfish和GData都保留XML信息,例如属性和名称空间。 它们更适合可能需要此信息的ATOM提要的重量级XML解析。
       有关用法,请参见Xml2Json主类。
      Xml2Json-转换器的JSON输出的详细信息
      每个变压器使用的规则记录在下面,随后是全局规则部分描述了所有变压器遵循的规则。
      派克变压器遵循记录的规则,但有以下警告:-
       类似命名的连续元素被分组在该元素的名称下,而不是像上面的
      dart文件命名使用小写加下滑线,dart类命名使用驼峰;Dart语法;
      绝对定位widget:Stack 、 Positioned
      url包裹widget:WebviewScaffold
      Color设置16进制颜色:Color(int.parse('0xff' + 'ffffff')),前两个ff指代的是alpha;
      如果是声明dart类内部可见的方法或属性,请以下划线开头;
      List遍历方式:List.map、List.forEach、for-in-
      声明构造方
      
 
推荐文章
乖乖的韭菜  ·  7 Papers & Radios | 联邦图机器学习综述;基于知识图谱和分子图的药物筛选模型(1)-阿里云开发者社区
6 月前
愤怒的佛珠  ·  在资源文件中动态替换字符串
1 年前
仗义的花生  ·  【第九十六期】AI+药物研发领域一周资讯 - 知乎
1 年前
冷冷的春卷  ·  基于机器学习的锂离子电池容量估计使用多通道充电配置程序_强化学习与锂电池_「已注销」的博客-CSDN博客
1 年前
踏实的匕首  ·  vscode选中一行快捷键-掘金
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号