【问题标题】:How do I declare 64bit unsigned int in dart/flutter?如何在 dart/flutter 中声明 64bit unsigned int?
【发布时间】:2019-05-04 11:38:04
【问题描述】:

对于一个应用程序,我需要一个 64 位无符号整数。查看 dart 文档,我不知道如何确切地声明一个。

谁能告诉我这是怎么做到的?我将在按位运算中使用这个“64bit unsigned int”。

【问题讨论】:

    标签: dart int flutter unsigned dart-2


    【解决方案1】:

    Dart 没有原生无符号 64 位整数。

    对于许多操作,您可以只使用int 所在的有符号 64 位整数,并将其解释为无符号。这是相同的位。但是,这不适用于除法。 (如果是用于网络,那么 int 是一个 JavaScript 编号,你需要做一些完全不同的事情。

    最简单的通用方法是使用BigInt,并在对其进行任何操作后使用toUnsigned(64)

    【讨论】:

    • 我的理解是,在 64 位有符号 int 中,其中一位是为符号保留的,只有 63 位可用于存储值。我需要将所有 64 位用于值。
    • 我的观点可能不是很好,即 bits 是相同的。有符号的 64 位整数不为符号保留位,它是 2 的补码表示,其中设置了最高有效位会使数字为负,但模 2^64 它仍然与相同的无符号解释相同位。对于许多操作,结果与那些 64 位被解释为有符号还是无符号无关。最后,如果你想打印结果,或者你想划分或做右移,这将很重要。如果需要,请使用BigInt
    • 谢谢,看来我必须使用BigInt,因为我需要使用轮班。
    • 我同意。当 Dart 得到 >>> 操作符后,你应该也可以处理无符号班次了,但还没有。
    • 简而言之,我们必须使用int?
    【解决方案2】:

    只需使用fixnum

    您可以使用Int64() 轻松创建int64

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 1970-01-01
      • 2015-12-14
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多