# [HILFE!]Dezimalzahl Umwandler in frei wählbares Zahlensystem



## Guest (1. Dez 2003)

Hi Leute ich brauche eure Hilfe, habe folgendes Problem:



> a.	Schreibe ein Programm, das eine Zahl im Dezimalsystem (Zahlenbereich: LongInt) umwandelt in ein frei wählbares Zahlensystem von 2 bis 16. (6. Klasse Seite 37).
> b.	Schreibe ein Programm, das Zahlen in den Zahlensystemen 2 bis 16 ins Dezimalsystem umwandelt.



BITTE BITTE helft mir unbedingt weiter und wenn mögl. erklärt das Ganze bestmöglich, ihr würdet mir damit das Leben retten!

thx,
Bär


----------



## Keld (1. Dez 2003)

Eine erklärung der Zahlensysteme würde in meinen augen den rahmen sprengen...

Am besten googeln nach: +Zahlensysteme +Java

ich hab mal für dich im voraus gegoogelt: http://www.fernsehdienst.de/thinkquest/binaer.html

und hier noch ein code beispiel, dass ausschliesslich duale in andere systeme umrechnet und somit schonmal teilaufgabe b für dich ansatzweise löst. Über den rest musst du dir selber nen kopf machen. wie gesagt ist etwas 
aufwendig.

ich hab versucht den code mal von Herrn/Frau Zeihe zu kommentieren.


```
import java.io.*;
/*
  Umrechnung von dualen in oktale, dezimale o. hexadezimale Zahlen.
  Author: Jana Zeihe
*/
public class Zahlensysteme
 {
  public static void main (String[]args)

  throws IOException
   {
    int i=0;
    int zahl;
    int basis; // Stellt das auszuwählende Zahlensystem dar (Basis 10 wäre Dezimalsystem)
    int r[] = new int [10];
    int ausgabe=0;
    int exp=1;
    int j=2;

// Init des Eingabemodus
    BufferedReader din = new BufferedReader(
                         new InputStreamReader(System.in));

    System.out.println("Geben Sie eine Zahl zur Basis 2 ein.");
    zahl = Integer.parseInt(din.readLine());
    System.out.println("Geben Sie eine Basis ein.");
    basis = Integer.parseInt(din.readLine());

//Dual->Dezimal
    while (zahl>0)
     {
      i++;
      r[i]=zahl%10;
      zahl=zahl/10;
     }
    while (j<=i)
     {
      exp=exp*2;
      ausgabe=ausgabe+(r[j]*exp);
      j++;
     }

    ausgabe=ausgabe+r[1];

    if (basis==10)
     System.out.print("Die Zahl lautet: " + ausgabe);

//Anscheinend ist hier die Basis Egal also Dual in x-beliebiges Zahlensystem
    else
     {
    zahl=ausgabe;
    i=0;

    while (zahl>0)
     {
      i++;
      r[i]=zahl%basis;
      zahl=zahl/basis;
     }

    System.out.print("Die Zahl lautet: ");

//Berechnung Dual->Hexadezimal
    for (int k=i; k>0; k--)
      {
     if ((basis==16) && (9<r[k]) && (r[k]<16))
       {
        switch (r[k])
         {
          case 10: System.out.print("A"); break;
          case 11: System.out.print("B"); break;
          case 12: System.out.print("C"); break;
          case 13: System.out.print("D"); break;
          case 14: System.out.print("E"); break;
          case 15: System.out.print("F"); break;
         }
       }
      else
       System.out.print(r[k]);
      }
     }
   }
}
```


Ich habe den code nicht getestet. Ich hoffe dir zumindest einen ansatzpunkt geben zu können. Die Zeit habe ich nicht deine aufgabe zu lösen


----------



## Guest (1. Dez 2003)

Danke dir auf jeden Fall, der Ansatz an sich ist ja nicht das Problem, sondern das Coding an sich :/

Schade, dass du nicht genug Zeit hast, ist aber verständlich! gegoogelt habe ich ja, aber spezifisch zu diesem Problem gefunden habe ich leider nichts!

Na vl. erbarmt sich ja doch noch jemand meinereiner


----------



## Stefan1200 (2. Dez 2003)

Um gottes willen, nicht so viel Code für was, was in Java mit einer kleinen Zeile gelöst werden kann.
Jungs, viel einfacher. Die Methodennamen sagen, in welcher Richtung umgewandelt wird.
Schaut sonst auch noch mal in der API Dokumentation nach parseLong und Radix. Radix sagt das Zahlensystem an, zum Beispiel 2 (Binär), 8 (Oktal), 10 (Dezimal) und 16 (Hex).
Schaut hier:


```
private String convertDec2Hex()
	{
			String tmp = Long.toHexString(Long.parseLong(tfDec.getText())).toUpperCase();
      return tmp;
	}

	private String convertDec2Oct()
	{
   		return Long.toOctalString(Long.parseLong(tfDec.getText()));
	}

	private String convertDec2Bin()
	{
   		return Long.toBinaryString(Long.parseLong(tfDec.getText()));
	}

	private String convertHex2Dec()
	{
			String tmp = Long.toString(Long.parseLong(tfHex.getText(),16));
      return tmp;
	}

	private String convertBin2Dec()
	{
			String tmp = Long.toString(Long.parseLong(tfBin.getText(),2));
      return tmp;
	}

	private String convertOct2Dec()
	{
			String tmp = Long.toString(Long.parseLong(tfOct.getText(),8));
      return tmp;
	}
```


----------

