HexCod Umrechner Programierung

Fire1990

Mitglied
Hallo hab ein Probelm und ich steh vor folgender aufgabe:

Wir sollen ein Java programm schreiben welches Zahlen und Texte in Hexa Cod umformen kann bin nun so weit gekommen das ich Zahlen wandeln kann hier mein Ergebniss:

Java:
String zeichen;

public      void        eingabe()
    {
    zeichen=jTextField2.getText();
    jTextField2.setText("");
    Daten.zahl=Integer.valueOf(zeichen);
    Daten.gewandelt=Integer.toHexString(Daten.zahl);
    inz_rechnen.setVisible(true);
    inz_rechnen.anzeigen();
    }

Ausgabe im neuen Fenster Speicherung in einer Datenklasse Funktioniert alles bestens bis dort solange es zahlen sind

Nun aber mein Problem dies funktioniert mit zahlen aber wie musss ich es machen wenn ich es mit texten machen will benötige dringend tipps wie man es anstellen kann muss bis nächster woche erledigt sein!!
 

Fire1990

Mitglied
also zu eine soll ich irgendwelche Zahlen umformatieren zu zahlen geht damit auch z.b. 12 ist in hex c spuckt er auch so aus und texte ist gemeint ich geb z.b. Hallo ein und das soll er dan als Hex folge ausgeben
 

Fire1990

Mitglied
hier mal die Aufgabenstellung:

Erstellen sie systematisch ein lauffähiges JAVA-Programm zur Berechnung des Hexadezimalcodes von beliebigen Zahlen und Texten.

Hinweis: es gitb die Methode toHexString()

Dies war unsere Prüfung heute mittag keiner wusste was und der Prof sagte nur das muss man könne wir sind alles verzweifelt weil wir fast keine Ahnung vom programmiern haben mehr als nen einfachen Rechner mit + * / - und nen Telefonbuch geschrieben haben wir nicht gemacht.

Nun müsste ich mal wissen ob es überhaupt geht und wen ja wie den wir müssen ihm unser Original in den Computer abschreiben und können eine verbesserte version beilegen
 

Niggel595

Mitglied
Moin,

ich glaube du sollst beim Text die einzelnen Buchstaben in Hexadezimal umformen. Dazu musst du wissen:

  • Ein String besteht aus mehreren Zeichen, den Characters. Der erste Character hat den Index 0. Den Character am Index x erhälst du mit
    Java:
    wort.charAt(x);
  • Ein Char wird intern als Zahl von 0 bis 255 gespeichert, du kannst ihn also wie eine Zahl verwenden. Damit kannst du einen Character in einen Hexadezimalausdruck umwandeln, indem du die einzelnen Hexadezimalausdrücke hintereinanderschreibst.
  • In der Regel werden dabei für jeden Buchstaben 2 Hexadezimalzeichen benutzt. Wenn du willst, kannst du jedes Pärchen auch noch durch ein Leerzeichen trennen.

Ich hoffe ich konnte dir weiterhelfen ;)

LG
Niggel
 
T

troll

Gast
du weist aber schon das char 16bit breit ist oder ? ergo geht sein wertebereich deutlich weiter als nur 255

@TO
JEDE information im rechner ist eine abfolge von zahlen ... nämlich genau 0 und 1 ... und diese folgen kann man natürlich beliebig umrechnen und auch beliebig ausgeben ...

tipp : String.getBytes()
 

Fire1990

Mitglied
habe nur bis jetz herausgefunden das ich das "wort" einzeln sichern muss in ein char also als string einlese und dan als char umwandeln nur wie kann ich es als char einlesen einzeln und dan einzeln wandeln lassen in eine Hex Zahl??
 

jgh

Top Contributor
evtl. ist es ja das, was du suchst...:

Java:
	String s = "IrgendeinString...vonMirAusEinemTextFeldEiner GUI";
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < s.length(); i++) {
			sb.append(String.format("%1$04x", (s.charAt(i) & 0xFFFF)));
			sb.append("\n");
		}
		System.out.println(sb.toString());

[edit]bzw.
Java:
sb.append(String.format("%1$02x", (s.charAt(i) & 0xFFFF)));
bei einer 2-stelligen Ausgabe[/edit]
 
Zuletzt bearbeitet:

langhaar!

Bekanntes Mitglied
habe nur bis jetz herausgefunden das ich das "wort" einzeln sichern muss in ein char also als string einlese und dan als char umwandeln nur wie kann ich es als char einlesen einzeln und dan einzeln wandeln lassen in eine Hex Zahl??

Ich habe das Programm gerade geschrieben. Bei vorgegebenem String ist es 3 Zeilen lang.
Ich würde dir ja helfen, aber selbst nach dreimaligem Lesen ist mir aus deinem obigen Beitrag nicht klar, wo genau dein Problem ist. Einfach die Lösung liefern möchte ich nicht.
 

Fire1990

Mitglied
ich müsste wissen wie ich Ein wort in ein char einfügen kann wie dies dan in ein integer gewandelt werden kann um es dan in den toHex einzufügen und zu wandeln
 

shishigami

Mitglied
  • Ein String besteht aus mehreren Zeichen, den Characters. Der erste Character hat den Index 0. Den Character am Index x erhälst du mit
    Java:
    wort.charAt(x);

Ist doch schonmal ein Anfang.

mit string.length() kommst du an die Länge des Strings - somit kannst du schonmal als ersten Schritt eine Schleife bauen. Innerhalb der Schleife kannst du dann charAt(x) nutzen, wobei x deine Zählvariable ist.
 

jgh

Top Contributor
kann man natürlich auch noch kürzer lösen:

Java:
		String s = "Wort";
		char[] charArray = s.toCharArray();
		int[] intArray = new int[charArray.length];
		for (int i = 0; i < charArray.length; i++) {
			intArray[i] = charArray[i];
		}
		for (int i = 0; i < intArray.length; i++) {
			System.out.println(Integer.toBinaryString(intArray[i]));
		}

geht natürlich auch direkt, da ein char auch ein int ist...
Java:
	String s = "Wort";
		char[] charArray = s.toCharArray();
		for (int i = 0; i < charArray.length; i++) {
			System.out.println(Integer.toBinaryString(charArray[i]));
		}
 
Zuletzt bearbeitet:
9

987654321

Gast
ich hätte es so gemacht

Java:
private String binaryToHexString(byte[] input)
{
	StringBuilder stringBuilder=new StringBuilder(input.length*2);
	for(byte b : input)
	{
		int i=b&0xFF;
		if(i<16)
		{
			stringBuilder.append("0");
		}
		stringBuilder.append(Integer.toHexString(i));
	}
	return stringBuilder.toString();
}

und als input halt einfach wie als tipp gesagt : String.getBytes() ...

passende umkehrmethode

Java:
private byte[] hexStringToBinary(String input)
{
	byte[] output=new byte[input.length()/2];
	for(int i=0; i<output.length; i++)
	{
		output[i]=(byte)Integer.parseInt(input.substring(i*2, (i*2)+2), 16);
	}
	return output;
}

und dann einfach mit new String(byte[]) wieder n string erzeugen ...


zur sicheren kommunikation sollte man getBytes("UTF-8") und new String(byte[], "UTF-8") verwenden ...
 

Ähnliche Java Themen

Neue Themen


Oben