Originariamente inviato da andbin
Scusa eh, non so cosa conosci di Java o della programmazione in generale. Conosci i sistemi di numerazione? C'è quello decimale (quello che usiamo tutti i giorni) ... c'è quello esadecimale, quello binario e quello ottale. (questi sono i 4 sistemi di numerazione più coinvolti nell'informatica)
In Java (e in svariati altri linguaggi di programmazione) un numero "letterale" (che vuol dire: scritto nel sorgente) che inizia con 0 è riconosciuto/trattato in base
ottale. Le cifre possono andare solo da 0 a 7.
Le seguenti variabili:
codice:
int a = 64; // in decimale
int b = 0x40; // in esadecimale
int c = 0100; // in ottale
hanno tutte lo
stesso valore, quello che cambia è solo la
rappresentazione nel sorgente.
Se tu pretendi che quella costante sia in decimale, non è così che funziona.
Però il modo c'è: usi il toString(int i, int radix) passando come radice 8. Se il letterale è 0100 (il valore decimale è 64), se lo converti con radice 8, questo toString ti fornisce ... "100" perché è la rappresentazione in stringa di 64 (decimale) fatta in base ottale.