Ovviamente, Java non supporta i tipi di numeri non firmati in modo nativo, and that's not going to change soon (commenti che iniziano nel 2002). Tuttavia, quando si lavora con database, come MySQL, possono tornare utili ogni tanto. Ci sono molte domande su come simulare numeri senza segno. Per esempio:Esiste una libreria Java per i wrapper di tipo di numero senza segno?
Tutti loro superficialmente descrivono come potrebbe essere fatto. Ma esiste una libreria in corso e implementando wrapper adatti per UByte
, UShort
, UInteger
, ULong
? Preferibilmente, questi involucri dovrebbero estendere java.lang.Number
e fornire un'API aritmetica simile a quella di java.math.BigInteger
.
Come si può vedere in this document, ci sono molte cose da pensare e molte cose che possono andare storte (ad esempio come cambiare bit per bit, come moltiplicare, ecc.), Quindi non voglio farlo da solo. Inoltre, non voglio utilizzare solo il tipo immediatamente successivo (ad esempio Short
anziché Byte
, ecc.). Voglio la nozione di un numero 8-bit
, 16-bit
, 32-bit
, 64-bit
conservato, per la migliore interazione con i database, per esempio.
UPDATE:
Prima di rispondere! Considera che conosco tutti i metodi alternativi, ma mi piacerebbe davvero avere esattamente quei 4 tipi con esattamente le proprietà sopra. E forse qualcuno lo ha già fatto, ecco perché lo chiedo. Non c'è bisogno di ricordarmi i metodi alternativi.
Tutti gli avvertimenti di bit fudging per giocare senza segno in terra firmata, non avendo "numeri che funzionassero come numeri" in genere sarebbero sufficienti per allontanarmi. Ci sono alcune aree in cui Java è mancato, questo è uno di questi. –
@pst: mi sento lo stesso. Nella maggior parte dei casi anch'io sono distolto. Ma in questo caso, una tale biblioteca sarebbe davvero un piacere. –
Qualche tempo fa ho incontrato la libreria [javolution] (http://javolution.org/target/site/apidocs/javolution/io/Struct.html) con la classe Struct contenente l'implementazione di Uints 8, 16, 32 bit. – 87element