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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn