在 C++ 中,我喜欢通过以下方式访问 64 位无符号整数: unsigned long long int, ,或通过 uint64_t. 。现在,我知道 Java 中的 long 是 64 位。然而,他们已经签署了。

是否有 unsigned long(长整型)可用作 Java 原语?我该如何使用它?

有帮助吗?

解决方案

我不这么认为。当你想要比签订长期去做大,我觉得的BigInteger 是唯一的(开箱)的路要走。

其他提示

启动的Java 8,存在一种用于无符号长(无符号64个比特)的支持。你可以使用它的方式是:

Long l1 = Long.parseUnsignedLong("17916881237904312345");

要打印出来,你不能简单地打印L1,但你必须先:

String l1Str = Long.toUnsignedString(l1)

然后

System.out.println(l1Str);

不,不存在。你将不得不使用原始long数据类型和处理的符号性问题,或使用一个类如的 BigInteger

没有,没有。的Java的设计者是有记录的话说,他们不喜欢无符号整数。使用的BigInteger 代替。请参阅这个问题获得的信息。

爪哇8 提供了一组unsigned long操作,可以让你直接将那些Long变量视为unsigned Long,下面是一些常用的:

对于有符号和无符号长整型,加法、减法和乘法是相同的。

根据所要执行的操作,结果是大致相同的,带符号。然而,除非使用的是微不足道的操作时,将会最终使用的BigInteger。

对于无符号长,您可以使用 无符号长整型 班级来自 番石榴图书馆:

它支持各种操作:

  • 模组
  • 除以

目前似乎缺少的是字节移位运算符。如果您需要这些,您可以使用 Java 中的 BigInteger。

Java没有无符号类型。如已经提到的,incure BigInteger的开销或使用JNI访问本地代码。

在org.apache.axis.types封装具有

UnsignedLong类。

对于行家:

<dependency>
    <groupId>org.apache.axis</groupId>
    <artifactId>axis</artifactId>
    <version>1.4</version>
</dependency>

好像在Java中8 一些方法添加以长期治疗老好[签字]只要无符号。似乎是一个解决办法,但有时可能会有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top