Hexadezimal -> Dezimal umwandeln (für Anfänger)

Daxi

Erfahrenes Mitglied
Hallo!

Ich will mich jetzt mit Java beschäftigen.
Jetzt möchte ich als Parameter den Hexa-Code einer Farbe übergeben und den Datentyp Color daraus erstellen, sodass ich die Farbe ich Java verwenden kann.

Mein Code bisher:
Code:
import java.awt.*;
import java.applet.*;

public class bsc extends Applet{
  Image img_logo;
  Color col_bg;
  public void init() {
	img_logo = getImage(getCodeBase(),getParameter("gfx_dir") + "logo.gif");
	col_bg = HexColor("#A0A0A0");
  }
  public void paint(Graphics g) {
	setBackground(col_bg);
	g.drawImage(img_logo, 0, 0, this);
  }
  static Color HexColor(String s) {
    String str_cr = s.substring(0,1);
    String str_cg = s.substring(2,3);
    String str_cb = s.substring(4,5);
	Integer cr = Integer.parseInt(str_cr, 16);
	Integer cg = Integer.parseInt(str_cg, 16);
	Integer cb = Integer.parseInt(str_cb, 16);
    Color col;
	col = new Color(cr, cg, cb);
	return col;
  }
}

Ich habe bisher auf keiner Website eine andere Möglichkeit gefunden, um aus einer Hex-Zahl eine Dezimalzahl zu machen.
Bei den Integer.parseInt(...) bringt mir der Compiler (und Eclipse) einen Fehler. Angeblich ist die Convertierung von Int auf Integer nicht möglich.

Was mache ich falsch?
Oder gibt es eine andere Funktion, um aus Hexadezimal-Zahlen Dezimalzahlen zu machen?!
 
Dein Code ist im Prinzip schon richtig, wenn auch umständlich. Integer.parseInt() liefert allerdings wirklich den rudimentären Datentyp int und kein Objekt vom Typ Integer zurück. In Java 1.5 wird das zwar nicht mehr so relevant sein (Auto[un]boxing), aber bis jetzt ist es das noch. Auch der Konstruktor der Klasse Color, den du benutzt erwartet int Werte und keine Integer Objekte.

Du brauchst allerdings auch den ganzen Kram mit den Substrings nicht. Das hier würde reichen:
Code:
String hexColor = "a0a0a0";
int intColor = Integer.parseInt(hexColor, 16);
Color bgColor = new Color(intColor);
oder in einer Zeile:
Code:
Color bgColor = new Color(Integer.parseInt("a0a0a0", 16));
Peter
 
Danke.
Hätte nicht gedacht, dass das auch in einer Zeile geht.
Bin mir eigentlich gewöhnt, dass ich die drei Farbwerte trennen muss und einzeln umwandeln...

Also danke nochmal.
 

Neue Beiträge

Zurück