aus einem String einzelne Hex Werte lesen

cable545

Aktives Mitglied
hallo
wie kann ich einen String welcher mehrere Hex Werte beinhaltet in ein int[] stecken?
also zb.: String s = "0f06ff";
Und diese Werte( 0x0f, 0x06, 0xff ) möchte ich in mein int Array packen. Steh gerade auf dem Schlauch.
 
ok ich hab eine Lösung. ich nimm mir immer zwei werte. der rechte wird mit 1 multipliziert und der linke wert mit 10. aus beiden produkten wird dann die summe gebildet welcher mein int wert darstellt.
 
wenn du meinst dass bei dir alles funktioniert dann ist ja gut,
allgemein klingen Hex + 'mit 10 mulitplizieren' aber nicht zusammenpassend,

zumal von einem String/char f zu einer Zahl, die man multiplizieren kann, erstmal ein gewisser Weg ansteht,
für Zeichen "3" und Co. gilt das allerdings genauso
 
Die Wrapper-Klassen für ganzzahlige Typen (Long, Integer etc.) haben jeweils parseXXX-Methoden, denen Du die Basis des Zahlensystems (bei Hex also 16) mitgeben kannst. Eine Dokumentation der Benutzung findest Du bei der API-Doku der jeweiligen Wrapper-Klasse, für Integer z.B. hier: Integer (Java Platform SE 6)
 
Zuletzt bearbeitet von einem Moderator:
uiii...das war doch nicht so einfach wie ich gedacht hab. zumal meine Idee auch völliger Blödsinn war.
Ich hab das nun so gemacht:
Code:
String s  = "ff0345f400";
int[] value = new int[s.length()/2];

for( int i = 0, j = 0; i < s.length(); i++, j++ ) {
   StringBuilder tmp = new StringBuilder();
   tmp.append( s.charAt(i));
   tmp.append( s.charAt(i + 1) );
   value[j] = Integer.parseInt( new String(tmp), 16 );
   i++;
}

der String wird byteweise verarbeitet. gibtes vielleicht noch Verbesserungsvorschläge?
ansonsten vielen Dank
 
new String(tmp)
->
tmp.toString()


da du aber eh immer nur zwei chars hast kannst du die auch einfach mit + zusammenfügen,
evtl. noch "" dazwischen um nicht Zahlen auszurechnen


langfristig wäre es nicht unbedingt angebracht immer die nur 16 verschiedenen Varianten einzeln als String zu bauen und zu parsen,
aber funktioniert ja vorerst
 
Code:
String s = "ff0345f400";
List<Integer> result = new LinkedList<Integer>();

for(String i : s.split("(?<=\\G.{2})"))
   result.add(Integer.parseInt (i, 16));
 

Zurück
Oben