Flutter进制转换插件baseconvert的使用

Flutter进制转换插件baseconvert的使用

简介

baseconvert 是一个用于在任何正整数进制之间进行任意有理数转换的 Flutter 插件。它支持任意精度、分数和重复的小数位,并且可以将数字以列表或字符串的形式输出。

特点

  • 支持任意有理数。
  • 支持任意精度。
  • 支持分数。
  • 支持重复的小数位。
  • 输入和输出支持列表或字符串格式。

许可证:MIT 许可证 (MIT) Copyright © 2020 Alex Collette

GitHub 仓库: GitHub Repo


使用方法

基本用法

// base(number, {inBase=10, outBase=10, maxDepth=10, string=false, recurring=true})

base([15, 15, 0, ".", 8], inBase: 16, outBase: 10);
// --> [4, 0, 8, 0, '.', 5]

base("FF0.8", inBase: 16, outBase: 10, string: true);
// --> '4080.5'

base("4080.5", inBase: 10, outBase: 16, string: true);
// --> 'FF0.8'

列表表示法

数字以一系列数字表示,每个数字是一个十进制整数值。小数点由字符串 . 表示。

[int, int, int, ... , '.', ... , int, int, int]
[   integer part    , '.',  fractional part   ]

字符串表示法

字符串数字的表示规则如下:

|  Value  | Representation |
|---------|----------------|
|  0 -  9 |    0  -  9     |
| 10 - 53 |    A  -  Z     |
| 36 - 61 |    a  -  z     |
| 62 +    | unicode 123 +  |

对于大于 61 的基数,推荐使用列表表示法。

重复的小数位

重复的小数位在字符串和列表表示法中都会用 [] 包围。可以通过设置 recurring 参数为 false 来关闭此行为。

base("0.1", inBase: 3, outBase: 10, string: true);
// --> '0.[3]'

base("0.1", inBase: 3, outBase: 10, string: true, recurring: false);
// --> '0.3333333333'

最大分数深度

整数部分总是任意大小的,而分数部分的深度(即小数位数)可以通过 maxDepth 参数指定,默认值为 10。

base("0.2", inBase: 10, outBase: 8);
// --> [0, '.', 1, 4, 6, 3, 1, 4, 6, 3, 1, 4]

base("0.2", inBase: 10, outBase: 8, maxDepth: 1);
// --> [0, '.', 1]

可调用的 BaseConverter 对象

如果需要多次转换,可以创建一个 BaseConverter 对象。

BaseConverter b = BaseConverter(inBase: 16, outBase: 8);
b.convert("FF");
// --> [3, 7, 7]

b.convert([15, 15]);
// --> [3, 7, 7]

b.convert("FF") == b([15, 15]);
// --> true

示例代码

以下是一个完整的示例代码,展示了如何使用 baseconvert 插件进行不同进制之间的转换:

//MIT License (MIT) Copyright (c) 2020 Alex Collette
//https://github.com/randomdude583/baseconvert
////////////////////////////////////////////////////////////////////////////////

import 'package:collection/collection.dart';
import 'package:baseconvert/baseconvert.dart';

void main() {
  // 使用 base() 函数进行进制转换
  print(base([15, 15, 0, ".", 8], inBase: 16, outBase: 10));
  // 输出: [4, 0, 8, 0, '.', 5]

  print(base("FF0.8", inBase: 16, outBase: 10, string: true));
  // 输出: '4080.5'

  print(base("4080.5", inBase: 10, outBase: 16, string: true));
  // 输出: 'FF0.8'

  // 使用 BaseConverter 对象进行多次转换
  BaseConverter b = BaseConverter(inBase: 16, outBase: 8);
  print(b.convert("FF")); // 转换 FF (Base 16) 到 Base 8
  // 输出: [3, 7, 7]

  print(b.convert([15, 15])); // 转换 FF (Base 15) 到 Base 15
  // 输出: [3, 7, 7]

  print(ListEquality().equals(b.convert("FF"), b.convert([15, 15])));
  // 输出: true

  // 将字符串表示的数字转换为列表表示
  print(representAsList("FF0"));
  // 输出: [15, 15, 0]

  // 将列表表示的数字转换为字符串表示
  print(representAsString([15, 15, 0]));
  // 输出: FF0
}

更多关于Flutter进制转换插件baseconvert的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter进制转换插件baseconvert的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


baseconvert 是一个用于在 Flutter 中进行进制转换的插件。它支持将数字在不同进制之间进行转换,例如二进制、八进制、十进制、十六进制等。以下是如何在 Flutter 项目中使用 baseconvert 插件的步骤。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 baseconvert 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  baseconvert: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在需要使用 baseconvert 的 Dart 文件中导入插件:

import 'package:baseconvert/baseconvert.dart';

3. 使用 baseconvert 进行进制转换

baseconvert 提供了多种方法来进行进制转换。以下是一些常见的用法示例:

3.1 将十进制转换为其他进制

void main() {
  int decimalNumber = 255;

  // 转换为二进制
  String binary = BaseConvert.decToBin(decimalNumber);
  print('Binary: $binary');  // 输出: Binary: 11111111

  // 转换为八进制
  String octal = BaseConvert.decToOct(decimalNumber);
  print('Octal: $octal');  // 输出: Octal: 377

  // 转换为十六进制
  String hexadecimal = BaseConvert.decToHex(decimalNumber);
  print('Hexadecimal: $hexadecimal');  // 输出: Hexadecimal: ff
}

3.2 将其他进制转换为十进制

void main() {
  // 二进制转十进制
  int decimalFromBinary = BaseConvert.binToDec('11111111');
  print('Decimal from binary: $decimalFromBinary');  // 输出: Decimal from binary: 255

  // 八进制转十进制
  int decimalFromOctal = BaseConvert.octToDec('377');
  print('Decimal from octal: $decimalFromOctal');  // 输出: Decimal from octal: 255

  // 十六进制转十进制
  int decimalFromHex = BaseConvert.hexToDec('ff');
  print('Decimal from hex: $decimalFromHex');  // 输出: Decimal from hex: 255
}

3.3 其他进制之间的转换

baseconvert 还支持直接在非十进制之间进行转换:

void main() {
  // 二进制转十六进制
  String hexFromBinary = BaseConvert.binToHex('11111111');
  print('Hex from binary: $hexFromBinary');  // 输出: Hex from binary: ff

  // 十六进制转二进制
  String binaryFromHex = BaseConvert.hexToBin('ff');
  print('Binary from hex: $binaryFromHex');  // 输出: Binary from hex: 11111111
}

4. 处理异常

在进行进制转换时,如果输入的数字不符合指定的进制格式,baseconvert 会抛出异常。因此,建议在使用时进行异常处理:

void main() {
  try {
    int decimal = BaseConvert.binToDec('102');  // '102' 不是有效的二进制数
    print('Decimal: $decimal');
  } catch (e) {
    print('Error: $e');  // 输出: Error: Invalid binary number
  }
}
回到顶部