Crear Unsigned Long en Java

Rupam Yadav 12 octubre 2023
  1. Crear entero unsigned long usando BigInteger en Java
  2. Unsigned Long Usando ULong de jOOU
Crear Unsigned Long en Java

Una variable long en Java siempre está firmada, que siempre tiene valores negativos y positivos. Pero también podemos usar y tratar la variable long general como una variable sin signo usando algunos métodos que se mencionan a continuación.

Crear entero unsigned long usando BigInteger en Java

En Java, los tipos primitivos como long proporcionan una amplia gama de cálculos de enteros grandes.

Aún así, para ir más allá de ese rango, necesitamos usar la clase BigInteger que podemos usar para realizar operaciones matemáticas en valores más grandes que los tipos primitivos pueden contener. Como el valor long sin signo es grande, usamos BigInteger.

En este ejemplo, primero llamamos a la función valueOf() de la clase BigInteger y le pasamos Long.MAX_VALUE, el valor máximo que puede almacenar. Luego, agregamos el valor que queremos almacenar, el cual obtenemos usando BigInteger.valueOf() y pasamos el valor.

Para convertir el valor BigInteger a un valor long, usamos BigInteger.longValue() y luego hacemos el longValue como una cadena sin firmar llamando a Long.toUnsignedString() y pasamos la variable longValue. Podemos ver que el valor se imprime en la salida y es un número positivo, lo que significa que es un valor unsigned long.

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);
  }
}

Producción :

9223372036854801441

Si imprimimos el longValue directamente, obtenemos un valor negativo porque long sigue siendo una variable con signo, pero la función toUnsignedString() la convierte en una cadena con el valor sin signo.

System.out.println(longValue);

Producción :

-9223372036854750175

Unsigned Long Usando ULong de jOOU

Otra forma de obtener y usar un valor long sin firmar es usar una biblioteca de terceros llamada jOOU. Necesitamos importar la siguiente dependencia maven para usarla.

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

La clase ULong en org.jooq.tools.unsigned proporciona algunos métodos para convertir un valor long en un valor sin signo. Uno de los métodos es el método valueOf() que toma un valor long.

En el programa, creamos un BigInteger y luego en el método ULong.valueOf(), pasamos el valor long usando bigInteger.longValue() que devuelve un objeto ULong.

import java.math.BigInteger;
import org.jooq.tools.unsigned.ULong;

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);
  }
}

Producción :

9223372036854801441
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

Artículo relacionado - Java Long