Flutter整数操作插件integer的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter整数操作插件integer的使用

Dart 的原生整数在自定义位宽的整数格式中。有用于获取 int 类型的 getter。i2i4i8i16i32i64 是标准的有符号整数类型,而 u1u2u4u8u16u32u63 是此库提供的标准无符号整数类型。如果你想要使用自定义位宽的整数格式,可以使用 ixux 数据类型。

所有操作和函数可以无缝地与其他 integer 类型以及原生的 intdouble 类型一起使用。请注意,所提供的所有整数类型实际上并不会在内存中分配不同的位宽。这是由于 Dart 虚拟机的限制。

/// 使用构造函数
i32(32423445435)
/// 或者使用 getter
32423445435.i_32 // -1936292933

记得将负整数字面量(如 -34644 或 -89)用括号包围,以告诉 Dart 应该对整个字面量调用 getter。例如:

(-98723447).u_16 // 39305

操作

所有的操作都与原生 int 兼容,并且也兼容所有有符号和无符号的 integer 类型。

u16 a = (-982342623).u_16;
print('Value of 16-bit unsigned integer a is $a');
print('Addition int: ${a + 862} double: ${a + 862.343}');
print('Subtraction int: ${a - 36} double: ${a - 36.909}');
print('Multiplication int: ${a * 6} double: ${a * 6.2345}');
print('Division int: ${a / 6} double: ${a / 6.2345}');
print('Euclidean Modulo int: ${a % 8} double: ${a % 8.923}');

位移操作仅支持 integerint 值。

print('Left Shift: ${a << 3}');
print('Right Shift: ${a >> 9}');
print('Triple Shift: ${a >>> 5}');

如果在 integer 变量的操作中使用了 double 值,值将在操作后被截断。

自定义位宽

提供自定义位宽以将整数转换为该格式,可以使用 ixux 数据类型。

/// 22位有符号整数
(-4567233343).iX(22) // 363713

/// 48位无符号整数
(-4567233343).uX(48) // 281470409477313

完整示例代码

import 'package:integer/integer.dart';

void main() {
  /// 一个在 32 位限制内的有符号整数
  var v32 = 34234324.i_32;
  print('将 34234324 转换为 32 位有符号整数的结果是 ' + v32.toString());

  /// 操作
  u16 a = (-982342623).u_16;
  print('16 位无符号整数 a 的值是 $a');
  print('加法 int: ${a + 862} double: ${a + 862.343}');
  print('减法 int: ${a - 36} double: ${a - 36.909}');
  print('乘法 int: ${a * 6} double: ${a * 6.2345}');
  print('除法 int: ${a / 6} double: ${a / 6.2345}');
  print('模运算 int: ${a % 8} double: ${a % 8.923}');

  /// 除法总是返回 `double` 类型,而不是操作数的 `integer` 类型
  print('除法 int: ${a / 6} double: ${a / 6.2345}');

  /// 位移操作仅支持 `integer` 和 `int` 值
  print('左移: ${a << 3}');
  print('右移: ${a >> 9}');
  print('三重右移: ${a >>> 5}');

  /// 一个在 8 位限制内的无符号整数
  ///
  /// 记得将负整数字面量用括号包围,否则结果可能不符合预期
  print('将 -34234 转换为无符号 8 位整数的结果是 ${(-34234).u_8}');

  /// 如果需要,可以提供自定义位宽
  print('将 -4567233343 转换为 22 位有符号整数的结果是 '
      '${(-4567233343).iX(22)}');

  /// 或者这样
  print('将 -4567233343 转换为 48 位无符号整数的结果是 '
      '${(-4567233343).uX(48)}');
}

更多关于Flutter整数操作插件integer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter整数操作插件integer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用integer插件来进行整数操作的示例代码。请注意,integer插件可能并不是官方推荐或广泛使用的插件,这里假设它是一个提供了整数操作功能的第三方插件。由于实际插件的具体API可能会有所不同,以下代码仅作为示例,展示如何集成和使用一个假设的整数操作插件。

首先,你需要在pubspec.yaml文件中添加这个插件的依赖(假设插件名为integer,实际使用时请替换为真实插件名):

dependencies:
  flutter:
    sdk: flutter
  integer: ^x.y.z  # 替换为实际版本号

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

接下来,在你的Dart代码中,你可以这样使用integer插件(以下代码为假设插件提供了基本的整数加减乘除功能):

import 'package:flutter/material.dart';
import 'package:integer/integer.dart';  // 假设插件提供了integer.dart文件

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Integer Operations Example'),
        ),
        body: Center(
          child: IntegerOperationsDemo(),
        ),
      ),
    );
  }
}

class IntegerOperationsDemo extends StatefulWidget {
  @override
  _IntegerOperationsDemoState createState() => _IntegerOperationsDemoState();
}

class _IntegerOperationsDemoState extends State<IntegerOperationsDemo> {
  String result = '';

  void performOperations() {
    // 假设插件提供了Integer类,并实现了基本的运算方法
    Integer num1 = Integer(10);
    Integer num2 = Integer(5);

    Integer sum = num1.add(num2);
    Integer difference = num1.subtract(num2);
    Integer product = num1.multiply(num2);
    Integer quotient = num1.divide(num2);  // 注意:这里假设divide返回整数部分

    setState(() {
      result = 'Sum: ${sum.toInt()}, Difference: ${difference.toInt()}, Product: ${product.toInt()}, Quotient: ${quotient.toInt()}';
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        ElevatedButton(
          onPressed: performOperations,
          child: Text('Perform Operations'),
        ),
        SizedBox(height: 20),
        Text(result),
      ],
    );
  }
}

在这个示例中,我们假设integer插件提供了一个Integer类,该类具有addsubtractmultiplydivide方法来进行整数运算。注意,由于整数除法可能涉及小数部分,这里假设divide方法返回的是整数部分(即舍去小数部分)。

请注意,由于integer插件可能并不存在或者API可能与上述示例不同,你需要查阅实际插件的文档来了解其正确的使用方法和API。如果插件提供了不同的类或方法名,你需要相应地调整代码。

如果你无法找到符合需求的整数操作插件,你也可以考虑使用Dart内置的整数运算功能,通过直接使用int类型来进行加减乘除等操作。

回到顶部