在 Java 中建立無符號長整數

Rupam Yadav 2023年1月30日 2022年5月1日
  1. 在 Java 中使用 BigInteger 建立無符號長整數
  2. 使用 jOOUULong - Unsigned Long
在 Java 中建立無符號長整數

Java 中的 long 變數總是有符號的,它總是有負值和正值。但是我們也可以使用下面提到的一些方法將一般的 long 變數用作無符號變數。

在 Java 中使用 BigInteger 建立無符號長整數

在 Java 中,像 long 這樣的原始型別提供了大量的大整數計算。

儘管如此,為了超出這個範圍,我們需要使用 BigInteger 類,我們可以使用它對比原始型別所能容納的更大的值執行數學運算。由於無符號 long 值很大,我們使用 BigInteger

在這個例子中,我們首先呼叫 BigInteger 類的 valueOf() 函式並傳遞 Long.MAX_VALUE,它可以儲存的最大值。然後,我們新增我們想要儲存的值,我們使用 BigInteger.valueOf() 獲得並傳遞該值。

要將 BigInteger 值轉換為 long 值,我們使用 BigInteger.longValue(),然後我們通過呼叫 Long.toUnsignedString()longValue 作為無符號字串並傳遞 longValue 變數.我們可以看到該值列印在輸出中,並且它是一個正數,這意味著它是一個無符號長整型值。

import java.math.BigInteger;

public class UnsignedLongExample {
    public static void main(String[] args) {

        BigInteger bigInteger = BigInteger.valueOf(Long.MAX_VALUE)
                .add(BigInteger.valueOf(25634));

        long longValue = bigInteger.longValue();

        String longAsUnsignedString = Long.toUnsignedString(longValue);
        System.out.println(longAsUnsignedString);
    }
}

輸出:

9223372036854801441

如果我們直接列印 longValue,我們會得到一個負值,因為 long 仍然是一個有符號變數,但函式 toUnsignedString() 將其轉換為具有無符號值的字串。

System.out.println(longValue);

輸出:

-9223372036854750175

使用 jOOUULong - Unsigned Long

獲取和使用無符號 long 值的另一種方法是使用名為 jOOU 的第三方庫。我們需要匯入以下 maven 依賴項才能使用它。

<dependency>
    <groupId>org.jooq</groupId>
    <artifactId>joou</artifactId>
    <version>0.9.4</version>
</dependency>

org.jooq.tools.unsigned 中的 ULong 類提供了一些將 long 值轉換為無符號值的方法。其中一種方法是採用 long 值的 valueOf() 方法。

在程式中,我們建立一個 BigInteger,然後在 ULong.valueOf() 方法中,我們使用返回 ULong 物件的 bigInteger.longValue() 傳遞 long 值。

import org.jooq.tools.unsigned.ULong;

import java.math.BigInteger;

public class UnsignedLongExample {
    public static void main(String[] args) {

        BigInteger bigInteger = BigInteger.valueOf(Long.MAX_VALUE)
                .add(BigInteger.valueOf(25634));

        ULong uLong = ULong.valueOf(bigInteger.longValue());
        System.out.println(uLong);
    }
}

輸出:

9223372036854801441
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相關文章 - Java Long

相關文章 - Java BigInteger