Code Java pour convertir en Base 10 à la Base de 9
Comment convertir un nombre en base 10 à la base 9 sans avoir à les convertir à la chaîne ?
Un certain nombre n'ont pas de base. Une représentation sous forme de chaîne d'un certain nombre n'ont une base. Quand vous dites que vous avez un nombre en base 10 vous fait dire que vous avez une base de 10 représentation sous forme de chaîne d'un nombre. La question est un oxymore.
OriginalL'auteur Emil | 2010-10-08
Vous devez vous connecter pour publier un commentaire.
FWIW, toutes les valeurs sont en fait à la base 2 à l'intérieur de votre machine (je parie que vous le saviez déjà). Il ne montre que la base 10 car la chaîne de conversion crée des représentations de chaîne en base 10 (par exemple lors de l'impression), parce que les méthodes comme
parseLong
suppose la chaîne d'entrée est en base 10, et parce que le compilateur s'attend à ce que tous les littéraux d'être en base 10 en fait, quand vous écrivez du code. En d'autres termes, tout ce qui est en binaire, l'ordinateur convertit uniquement les trucs dans et à partir de la base de 10 pour la commodité de nous, les humains.Il s'ensuit que nous devons être facilement en mesure de changer la sortie de la base de quelque chose d'autre que 10, et donc d'obtenir des représentations de chaîne pour la même valeur dans la base de 9. En Java, cela se fait en passant une option de base paramètre dans le
Long.toString
méthode.OriginalL'auteur MAK
est-il des devoirs?
j'ai édité la question pour le rendre clair.
Sauf si c'est les devoirs, en passant par la chaîne est le plus intelligent de la route, sauf si vous avez féroce exigences de performance. Sinon, vous avez juste à ré-écrire l'algorithme utilisé par
valueOf()
(essentiellement, à l'aide du module et de la division entière de choisir la base-les 9 chiffres de votre numéro de la base).Non, vous le faites à l'envers. Vous êtes l'interprétation de la chaîne "10" comme base 9 de la représentation. Je crois que le point de cette question était de passer de la base 10 "9" à la base 9 "10", mais votre réponse ne le contraire. Je pense que vous voulez
Long.toString(9, 9)
, qui renvoie"10"
.OriginalL'auteur mR_fr0g
Que signifie "se convertir à la base 9 sans avoir à les convertir à la chaîne" signifie réellement?
De Base-9, en base 10, base 2 (binaire), la base 16 (hexadécimale), sont juste des façons de représentent numéros. La valeur elle-même ne dépend pas de la façon dont vous le représenter.
int x = 256
est exactement le même queint x = 0xff
autant que le compilateur est concerné.Si vous ne voulez pas de "convertir à la chaîne" (j'ai lu cela comme signifiant que vous n'êtes pas concerné par la représentation de la valeur), alors que voulez-vous faire exactement?
OriginalL'auteur Grodriguez
Vous ne pouvez pas convertir à la base 9 sans avoir à les convertir à la chaîne.
Lorsque vous écrivez
vous faisons implicitement l'hypothèse que c'est en base 10. Si vous voulez interpréter que comme une base de 9 numéro de c'est très bien, mais il n'y a aucun moyen de Java (ou toute autre langue que je connais) est soudainement va le voir de cette façon et donc 8+1 sera de retour le 9 et pas 10. Il y a un support natif pour la base 2, 8, 16 et 10, mais pour toute autre base, vous aurez à traiter comme une chaîne de caractères. (Et puis, si vous êtes sûr de cela, le reconvertir en un long)
string
en utilisant l'arithmétique des nombres entiers, mais il est difficile de voir pourquoi vous devriez. Vous pouvez aller de toute façon: la traduction de l' (calcul de 1*9^2+2*9+3) ou de la traduction (la production de décimal 148 destiné à être interprété comme le base-9 équivalent). Je ne vois vraiment pas le point, si!Assez juste, si vous le faites à la main 🙂
OriginalL'auteur Michael Clerx
Vous devez appliquer l'algorithme qui convertit un nombre à partir d'une base à une autre par l'application répétée d'modulo opérations. Regarder ici pour une implémentation de Java. Je rapportons ici le code trouvé sur ce site. La variable
M
doit contenir le nombre à convertir, etN
est la nouvelle base.Mise en garde: pour l'extrait de code fonctionne correctement,
N>=1 && N<=10
doit être vrai. L'extension avecN>10
est laissé au lecteur intéressé (vous devez utiliser des lettres au lieu de chiffres).Je viens de copier le programme que j'ai trouvé sur le site lié. En effet, M est le nombre à convertir une N est la nouvelle base.
Je ne voudrais pas utiliser de sources à partir d'un site qui utilise l'état de l'évidente documentation du code.
OriginalL'auteur Luca Martini
Si vous pouvez vraiment faire quelque chose, mais de convertir à la chaîne effectuez les opérations suivantes:
OriginalL'auteur Czipperz