import java.util.Scanner; 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) { Scanner lettore = new Scanner(System.in); int x; do { System.out.print("scrivi un intero positivo in base 10 (0 per terminare): "); x = lettore.nextInt(); if(x==0) break; System.out.println(x + " in 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(x + " in base 16: " + codifica(x, 16)); // stampa la codifica esadecimale di x System.out.println(x + " in base 8: "+codifica(x, 8)); // stampa la codifica ottale di x System.out.println(x + " in base 2: "+codifica(x, 2)); // stampa la codifica in base 2 di x } while(true); } }