public class CodificaPosizionale { // assumo che la base sia minore o uguale a 36 public static String codifica(int valore, int base) { // divido il numero per la base, prendendo il resto // continuo finche' il quoziente e' > 0 String risultato = ""; while(valore > 0) { int resto = valore % base; valore = valore / base; risultato = trasformaInSimbolo(resto) + risultato; } return risultato; } public static char trasformaInSimbolo(int n) { String sequenzaSimboli = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // devo prendere il carattere in posizione n return sequenzaSimboli.charAt(n); } public static void main(String[] hhh) { int x = 23567; System.out.println("base 30:" + codifica(x, 30)); System.out.println("controllo usando il metodo predefinito in Java: base 30:" + Integer.toString(x, 30) ); // stampa la codifica esadecimale di x System.out.println("base 16:" + codifica(x, 16)); // stampa la codifica esadecimale di x System.out.println("base 8: "+codifica(x, 8)); // stampa la codifica ottale di x System.out.println("base 2: "+codifica(x, 2)); // stampa la codifica in base 12 di x } }