2011-12-13 6 views

risposta

9

Ho fatto esattamente sth come questo sei mesi fa solo per divertimento ispirato da TimeUnit enum.

Lo caricherò domani a GitHub. Contiene due enumerazioni: BitUnit e ByteUnit. Entrambi supportano anche la conversione tra di loro. ByteUnit ha il supporto per prefissi basati su 2 e anche per prefissi basati su 10. (. costanti e metodi Enum in ByteUnit uso IEC 80.000-13 terminologia per i prefissi)

Uso assomiglia a questo:

System.out.println(BitUnit.KBIT.toKiB(16000)); 

System.out.println(ByteUnit.GIB.toMB(1)); 
System.out.println(ByteUnit.GIB.toMiB(1)); 
System.out.println(ByteUnit.GB.toMB(1)); 
System.out.println(ByteUnit.GB.toMiB(1)); 

... e stampa:

1953.125 

1073.741824 
1024.0 
1000.0 
953.67431640625 

per conversione metodi tra bit e byte hai sovraccaricato i metodi per specificare una dimensione di parola diversa da 8 bit per byte. Spero che tu possa aspettare fino a domani.


EDIT

Ecco a voi: https://github.com/fabian-barney/Utils

Non prendetevela con me per la struttura di directory - non sono ancora familiarità con Git ancora. :)

+1

Sei riuscito a portarlo su GitHub? –

+0

Ho appena creato un account. Dammi un secondo per installare e configurare correttamente eGit.È la prima volta che utilizzo Git - ho solo esperienza con svn e cvs. :) –

+0

Capito! Sry ci è voluto così tanto tempo! –

0

No, ma è possibile convertire facilmente con te stesso:

long maxBits = 11L * 1024 * 1024 * 8; 

o

long maxBits = 11L * 1000 * 1000 * 8; 

a seconda della definizione di un megabyte.

+0

Ciò comporterà aritmetica e overflow interi se superiore a 1 gigabyte. Suggerirei di fare almeno una di quelle costanti con un 'L' finale o un cast finale. – Gray

+2

Certo, ma la moltiplicazione esplicita è ciò che sto cercando di evitare. –

+0

Buon punto, riparato sopra. Non ha importanza con queste costanti, ma supererebbe 255 Mb. I tipi espliciti ora potrebbero evitare problemi in seguito. –

-4

Guardando la documentazione Java per l'interfaccia Comparable che implementa lo strumento TimeUnit non esiste nulla di simile. Vedi qui: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Comparable.html

Con tale collegamento tuttavia non dovrebbe essere difficile per voi ricavare la propria versione di lavoro da utilizzare nei propri progetti.

+0

In che modo 'Comparable' è mai stato correlato alla domanda? –

Problemi correlati