Hexa to Dez

M

Morf

Gast
Hi Leute,
ich möchte aus einer Hexadezimalen eine Dezimale Zahl machen. Ich dachte mir das könnte gehen, wenn man die Hexa-Zahl zuerst in ein Char-Array schreibt und dann jedes Char überprüft, ob es eine Zahl ist oder a,b,c,d,e,f. Die Buchstaben sollen dann in zahlen 10,11,12 usw. umgewandelt werden, sodass man nur noch Zahlen von 0 bis 15 hat.
Nun sollen diese Werte mal 16^(n-1) genommen werden, wobei n die Stelle des char in der Hexa-Zahl angibt. Jetzt addiert man die Zahlen noch und man hat die Dezimale Zahl.
Mein Problem ist nun, das ich schon bei der If-Anweisung scheitere. Ich habe festgestellt, dass dort das Problem liegt, kann es aber nicht beheben -.-.
Freue mich auf antworten.



Java:
import java.applet.*;
import java.awt.Button;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

public class Main extends Applet implements ActionListener{
	
	public String Eingabe;
	public Button NewHexa;
	public Integer Hexa_int,zwischen_int,x;
	public char[] Hexachar;
	public Integer[] Hexanumb;
	
	public void init(){
		NewHexa = new Button("Neue Hexadezimale Zahl");
		NewHexa.addActionListener (this);
		NewHexa.setActionCommand ("Action_1");
		this.add(NewHexa);
		
	}
	
	public void actionPerformed (ActionEvent e)
	{
		Graphics g = getGraphics();
		String which = (String) e.getActionCommand();
		if ( which.equals("Action_1") ) 
		{
			Eingabe = JOptionPane.showInputDialog("Gib eine Hexadezimale Zahl ein, welche als Dezimale Zahl ausgegeben wird.");
			Hexa_int = Eingabe.length();
			Hexachar = Eingabe.toCharArray();
			x=100;
		
			while (Hexa_int > 0) {
				
				Hexa_int = Hexa_int - 1;
		
				if (Hexachar[Hexa_int]==(char)065) 
					Hexanumb[Hexa_int] = 10;				
				else if (Hexachar[Hexa_int]==066) 
					Hexanumb[Hexa_int] = 11;
				
				else if (Hexachar[Hexa_int]==067) 
					Hexanumb[Hexa_int] = 12;
				
				else if (Hexachar[Hexa_int]==68) 
					Hexanumb[Hexa_int] = 13;
				
				else if (Hexachar[Hexa_int]==69) 
					Hexanumb[Hexa_int] = 14;
				
				else if (Hexachar[Hexa_int]==70) 
					Hexanumb[Hexa_int] = 16;
				else 
					Hexanumb[Hexa_int] = (int)Hexachar[Hexa_int]; 
				
			String Dezi_str=String.valueOf(Hexanumb[Hexa_int]);  
			x=x+20;

			g.drawString(Dezi_str,100,x);	

			    }		 		
		      }	
	      }

      }
 
G

Gost

Gast
Mal am Anfang:
F zu dezimal = 15^^

Mal ne Frage:
public Integer[] Hexanumb;
Du hast zwar dieses Integer-Array, aber wo initialisierst du es? Wieviele WErte es hat??

Und: Bei welcher Abfrage?

Eine andere möglichkeit:
Du gehts in einer schleife alle Zahlen von hinten nach vorne durch. Aber in einem String. Und dort überprüfst du es:
Pseudo:
Java:
int summe = 0
for(int i = 0; i < stringName.length; i++)
{
     if(stringName.charAt(0) == 'F')
       summe += 15 * 16(hoch n)
if(stringName.charAt(0) == 'E')
       summe += 14 * 16(hoch n)
if(stringName.charAt(0) == 'D')
       summe += 13 * 16(hoch n)
if(stringName.charAt(0) == 'C')
       summe += 12 * 16(hoch n)
if(stringName.charAt(0) == 'B')
       summe += 11 * 16(hoch n)
if(stringName.charAt(0) == 'A)
       summe += 10 * 16(hoch n)
else
{
int zahl = Integer.parseInt(stringName.charAt(n));
summe += zahl * 16(hoch n);
}
}

Das wäre es^^
Nur ne andere Möglichkeit...
Sonst:
Mehr Details

}
 
G

Gost

Gast
Sorry:
Statt allen hoch n ein (hoch i)
Und alle Charats natürlich an der Position stringName - i - 1;

mfg
 

Michael...

Top Contributor
Wenn man's nicht selbst berechnen will:
Java:
int decimal = Integer.parseInt("4F", 16);
System.out.println(Integer.toHexString(decimal) + " in Hex  entspricht " + decimal + " in Dez");

Ausserdem sollte man auf graphischen Komponenten nie getGraphics() aufrufen. Sondern
AWT: z.B. Component verwenden, deren paint(Graphics g) überschreiben und dieses Graphicsobjekt verwenden
Swing: z.B. JComponent verwenden, deren paintComponent(Graphics g) überschreiben und diese Graphicsobjekt verwenden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Wie von RGB in Hexa-Farbcode? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben