Umwandlung von Zahlensystemen

Status
Nicht offen für weitere Antworten.

haderach

Mitglied
Hi,
mich würde interessieren ob es eine Bibliotheksfunktion/methode/Klasse gibt die eine Zahl
aus einem bestimmen Zahlensystem in ein anderes umwandeln kann.
Am meisten interessiert mich dabei das umwandeln von Dez in ein beliebiges.
Mir ist bewußt wie man es auch ohne eine Bibliotheksfunktion/methode/Klasse
(also mit Zahl : neue_Basis ....) machen kann.
Ich würde mir nur gerne den Code der "originalen" Funktion angucken.

ich hatte an sowas gedacht
Code:
int umwandl(int Zahl,originale_Basis,neue_Basis){....}
Besten Dank und mit Freundlichen Grüßen,
Haderach
 
Integer kann jede Basis parsen und hex, bin, und oct Strings auspucken. Wenn das nicht reicht musst du's selbst schreiben. (sind ja auch nur ca. 4 Zeilen) :wink:
 
Mir geht es nicht darum ein Problem zu lösen, ich würde mir nur gerne anschauen wie die Programmierer von Sun und co es geschrieben haben. (ist es nicht wie bei C schau dir guten Sourcecode an um zu lernen?)
Somit würde ich gerne die Klasse bzw. die Methode dazu kennen (aber eine derartige gibt es in in Java?).
 
Die meisten mathematischen Berechnungen werden in nativen Methoden durchgeführt, von daher ist das ziemlich sinnlos.
Ausserdem brauchst du für die Konvertierung ja wirklich nur / und %. Kann man also nicht viel falsch machen.
 
Könntest du mir den Code geben? für Dez in Beliebig ist es mir klar, nur wie man es für Beliebig in Beliebig macht weiß ich nicht.
 
nana, ist ja doch vorhanden,

also in Java 1.4.2:
Klasse
java.lang.Integer
Operationen
public static String toString(int i, int radix)
public static int parseInt(String s, int radix)

wenn du ein JDK installiert hast, dann solltest du eine 20 MB-Datei mit dem Java-Quellcode haben,
da suche nach java/lang/Integer.java

wenn du nicht weiterkommst kann ich das posten aber ist recht lang und dann noch die benötigten Konstanten usw.
 
Oh, die hab ich noch nie vorher gesehen. Nice 🙂
edit: hier übrigens der source:

Code:
    public static String toString(int i, int radix) {

        if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)
	    radix = 10;

	/* Use the faster version */
	if (radix == 10) {
	    return toString(i);
	}

	char buf[] = new char[33];
	boolean negative = (i < 0);
	int charPos = 32;

	if (!negative) {
	    i = -i;
	}

	while (i <= -radix) {
	    buf[charPos--] = digits[-(i % radix)];
	    i = i / radix;
	}
	buf[charPos] = digits[-i];

	if (negative) {
	    buf[--charPos] = '-';
	}

	return new String(buf, charPos, (33 - charPos));
    }
 
Besten Dank (ich werde mich damit auseinandersetzen )

Ps.:
bin beeindruckt wie schnell ich eine Antwort bekommen habe.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben