Pregunta

En C++, disfruté de tener acceso a un entero sin signo de 64 bits, a través de unsigned long long int, o vía uint64_t.Ahora, en Java los longs son de 64 bits, lo sé.Sin embargo, están firmados.

¿Hay un largo (largo) sin firmar disponible como primitivo de Java?¿Como lo uso?

¿Fue útil?

Solución

Yo no lo creo. Una vez que quiere ir más grande que una larga firmado, creo BigInteger es la única (de la caja) camino a seguir.

Otros consejos

A partir Java 8, no hay soporte para unsigned long (64 bits sin signo). La forma en que se puede utilizar es la siguiente:

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

Para imprimirlo, no se puede simplemente imprimir L1, pero hay que primero:

String l1Str = Long.toUnsignedString(l1)

Entonces

System.out.println(l1Str);

No, no lo hay.Tendrás que usar la primitiva. long tipo de datos y tratar problemas de firma, o usar una clase como BigInteger.

No, no lo hay. Los diseñadores de Java son en expediente como diciendo que no les gustaba enteros sin signo. Utilizar un BigInteger lugar. Ver esta pregunta para más detalles.

Java 8 proporciona un conjunto de operaciones de largo sin signo que le permite tratar directamente las variables siempre y cuando no firmada largo, Acá algunos usan habitualmente:

Y adiciones, sustracciones, multiplicaciones y son los mismos para los largos y sin signo.

En función de lo que se pretenda llevar a cabo, el resultado es prácticamente el mismo, con o sin signo. Sin embargo, a menos que esté utilizando operaciones triviales que va a terminar usando BigInteger.

Para firmar tiempo se puede utilizar clase UnsignedLong de biblioteca de guayaba

Es compatible con diversas operaciones:

  • plus
  • menos
  • veces
  • mod
  • dividedBy

Lo que parece que falta en este momento son operadores de desplazamiento de bytes. Si necesita los puede utilizar BigInteger desde Java.

Java no tiene los tipos sin signo. Como ya se ha mencionado, incure la sobrecarga de BigInteger o utilizar JNI para acceder a código nativo.

El paquete tiene un org.apache.axis.types

clase UnsignedLong.

para Maven:

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

Parece que en Java 8 se añaden algunos métodos para de largo para tratar la vieja buena [firmado] siempre y cuando no firmada. Parece una solución, pero puede ayudar a veces.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top