Java-Äquivalent von unsigned lang lang?
In C++, ich habe es genossen, Sie haben Zugriff auf eine 64-bit-Ganzzahl ohne Vorzeichen, über unsigned long long int
oder über uint64_t
. Nun, in Java longs sind 64 bits, die ich kenne. Sie sind jedoch signiert.
Ist es ein unsigned long (long) Java primitive? Wie kann ich es verwenden?
InformationsquelleAutor der Frage eleven81 | 2009-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Glaube ich nicht so. Sobald Sie gehen wollen, größer als eine signierte long, ich denke, BigInteger ist die einzige (aus der box) Weg zu gehen.
InformationsquelleAutor der Antwort Sean Bright
Ab Java 8 gibt es Unterstützung für unsigned long (unsigned 64 bit). Die Art und Weise Sie es verwenden können, ist:
Drucken, können Sie nicht einfach drucken, l1, aber du musst zuerst:
Dann
InformationsquelleAutor der Antwort Amr
NÖ, gibt es nicht. Sie müssen die primitiven
long
Datentyp und befassen sich mit Fehler, Probleme, oder verwenden Sie eine Klasse, wieBigInteger
.InformationsquelleAutor der Antwort Adam Rosenfield
Nein, gibt es nicht. Die Designer von Java sind auf Platte als sagen, dass Sie nicht wie unsigned ints. Verwenden Sie eine BigInteger statt. Sehen diese Frage für details.
InformationsquelleAutor der Antwort Paul Tomblin
Java 8 bietet eine Reihe von unsigned long Vorgänge, die ermöglicht es Ihnen, direkt zu behandeln, diese Langen Variablen als unsigned Long, hier sind einige Häufig verwendeten:
Und Ergänzungen, Subtraktionen und Multiplikationen sind die gleichen für signed und unsigned Long.
InformationsquelleAutor der Antwort keelar
Je nach den Operationen, die Sie durchführen wollen, das Ergebnis ist ziemlich das gleiche, mit oder ohne Vorzeichen. Allerdings, wenn Sie über triviale Operationen werden Sie am Ende mit BigInteger.
InformationsquelleAutor der Antwort Peter Lawrey
Für unsigned long können Sie benutzen, UnsignedLong Klasse aus Guava-Bibliothek:
Er unterstützt verschiedene Operationen:
Die Sache, die scheint, fehlen im moment sind byte-shift-Operatoren. Wenn Sie brauchen, diejenigen, die Sie verwenden können, BigInteger aus Java.
InformationsquelleAutor der Antwort Andrejs
Java keine unsigned-Typen. Wie bereits erwähnt, incure der overhead von BigInteger oder verwenden JNI-Zugriff auf native code.
InformationsquelleAutor der Antwort basszero
Den org.apache.Achse.Typen-Paket hat eine
UnsignedLong Klasse.
für maven:
InformationsquelleAutor der Antwort user637338
Scheint, wie in Java 8 einige Methoden Hinzugefügt werden zu Lange zu behandeln, zu guten alten [signed] long wie unsigned. Scheint ein workaround, aber vielleicht hilft manchmal.
InformationsquelleAutor der Antwort Mikalai Sabel