J'essaie de convertir un numéro de base 10 à n'importe quelle base en utilisant la conversion. En ce moment, c'est le code que j'ai proposé. J'ai un sentiment triste que cela peut être complètement faux. L'image ci-dessous est un exemple de la manière dont ce processus devrait avoir lieu.
http://i854.photobucket.com/albums/ab107/tonytauart/ rrrr.png p> } p> p>
5 Réponses :
public class Converter {
private static char symbols[] = new char[] { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T' };
public static void main ( String args[] )
{
Converter converter = new Converter ();
System.out.println( converter.convert ( 31, 16 ));
}
public String convert ( int number, int base )
{
return convert(number, base, 0, "" );
}
private String convert ( int number, int base, int position, String result )
{
if ( number < Math.pow(base, position + 1) )
{
return symbols[(number / (int)Math.pow(base, position))] + result;
}
else
{
int remainder = (number % (int)Math.pow(base, position + 1));
return convert ( number - remainder, base, position + 1, symbols[remainder / (int)( Math.pow(base, position) )] + result );
}
}
}
This will convert from Base 2 to Base 36, although you could expand it by adding more symbols.
Si vous essayez simplement de convertir des bases (comme la base 2), essayez le code suivant: p>
Pour spécifiquement base 2: p>
Integer contient d'autres méthodes telle que tohexstring qui peut être utilisé. Ceux-ci supposent que INTEGER.PARSINTINT (INTEGER.TOSTRING (NUMÉROCONVERT, BASE)) CODE> P>
INTEGER.PARSINT (INTEGER.TOBARYINDING (NUMÉTHOCONVERT)) CODE> P>
numbertoconvert code> est dans la base 10. p>
Je viens de finir de faire ce problème pour une classe Comp SCI. Je devais résoudre ce problème de manière récursive:
Je pense que nous apprenions du même livre. C'est exactement ce dont j'avais besoin!
Un moyen rapide de le faire en Java est-ce: par exemple, p> retournerait "11111111". Je ne sais pas si vous recherchez une solution rapide ou souhaitez-vous réellement mettre en œuvre la méthode de conversion vous-même. Ce serait une solution rapide. Reportez-vous à cet article: Quelle est la méthode dans L'API de convertir entre bases? p> p>
Cependant, le deuxième argument par défaut à 10 si donné> caractère.max_radix code>, qui est généralement de 36 (10 pour 0-9, 26 pour l'alphabet) pour le deuxième argument.
public class Converter {
private static char symbols[] = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T' };
public static void main(String args[]) {
Converter converter = new Converter();
System.out.println(converter.convert(31, 16));
}
public String convert(int number, int base) {
return convert(number, base, 0, "");
}
private String convert(int number, int base, int position, String result) {
if (number < Math.pow(base, position + 1)) {
return symbols[(number / (int) Math.pow(base, position))] + result;
} else {
int remainder = (number % (int) Math.pow(base, position + 1));
return convert(number - remainder, base, position + 1, symbols[remainder / (int) (Math.pow(base, position))] + result);
}
}
}
Est-ce que ce devoir? Si tel est le cas, il devrait être étiqueté avec la balise [Homework].
Vous devez définir une base de base, disons-vous, lorsque votre numéro est inférieur à votre base, et la partie récursive, disons, les opérations pour obtenir le prochain chiffre de votre numéro converti.
Merci pour la tête Louis ... et merci aussi Luiggi, idk pourquoi je pensais avoir == 0 était une bonne idée. Je ne pense pas que cela soit même nécessaire maintenant que je le regarde
Y a-t-il des restrictions sur "n'importe quelle base"? Par exemple, êtes-vous censé prendre en charge la base 900 (pour laquelle aucun jeu de caractères standard n'est défini)?
J'ai trouvé une réponse qui explique comment convertir un entier de n'importe quelle base à une autre base: Stackoverflow.com/a/15735138/975097 a>
@Louiswasserman Deux ans plus tard, oui, c'est mes devoirs.