# Hex-String in Ascii-String umwandeln!



## sunnyfriday (6. Feb 2009)

hallo Leute,

habe ne Frage... Ich habe einen String in Hex. Jetzt möchte ich diesen String als ASCII umwandeln. Wie kann ich das machen??

Ich habe nähmlich eine TextArea, und in dieser TextArea möchte ich einen Hex String formatiert ausgeben.
Zb.   48 41 4C 4C 4F; "H a l l o"
       0f 23  EE 02 E2; ...

Den HexString formatiert auszugeben funktioniert( Leerzeichen zwischen 2 Zeichen, neue Zeile nach bestimmter Anzahl von Zeichen). Siehe Code unten.

wie kann ich 48 41 4C 4C 4F in seinem ASCII Code("Hallo") umwandeln, so dass ich es daneben plazieren kann.


```
public static String formatHexString(String s) {

		StringBuilder sb = new StringBuilder();

		String space = " ";
		String carriageReturnAndLineFeed = "\r\n";

		for (int i = 0; i < s.length();) {
			for (int j = 0; i < s.length() && j < 16; j++) {     //nach 16 Zeichen neue Leerzeile
				for (int k = 0; i < s.length() && k < 2; k++) {
					sb.append(s.charAt(i++));
				}
				sb.append(space);
			}
			sb.append(carriageReturnAndLineFeed);
		}

		return sb.toString();
	}
```

Hoffe jemand kann helfen.

gruss sunny


----------



## Ark (6. Feb 2009)

Wie liegen denn die Zahlen vor, die du hexadezimal ausgibst? Ich nehme mal stark an, als int (oder kompatibel), und falls dem so sein sollte, brauchst du nur noch eine Tabelle, die jedem int aus [0;127] ein ASCII-Zeichen zuordnet. (ASCII definiert nicht Zeichen ab 128.) Irgendwo gibt es auch so was (StringWriter oder so ähnlich in java.io).

Ark


----------



## Daniel_L (6. Feb 2009)

```
StringBuffer sb = new StringBuffer("");
String[] arr = new String[] {"48", "41", "4C", "4C" ,"4F"};

for (String a : arr ) {
  int c = Integer.parseInt(a,16);
  char chr = (char)c;
  sb.append(chr);
}

System.out.println(sb.toString());
```

nicht getestet, aber ich denke, so sollte es klappen...


----------



## sunnyfriday (6. Feb 2009)

hallo die Zahlen liegen komplett als ein String vor.




> String[] arr = new String[] {"48", "41", "4C", "4C" ,"4F"};


Sie liegen nicht in einem String Array. Sondern String s = "48 41 4C 4C 4F ..."


----------



## Ark (6. Feb 2009)

Und wie sind die da reingekommen?

Ark


----------



## Ariol (6. Feb 2009)

sunnyfriday hat gesagt.:
			
		

> hallo die Zahlen liegen komplett als ein String vor.
> 
> 
> 
> ...



Und?


```
s.split(" ");
```

Schon haste dein Array


----------



## sunnyfriday (7. Feb 2009)

hallo Leute,

habe es jetzt mit eurer Hilfe geschafft. Jedoch ist das Problem aufgetaucht, dass bei zb. hex 91  das Zeichen " ' " auftauchen muss. bei mir kommt da immer ein quadrat. 91 ist im ANSI Zeichensatz. We bekomme ich es hin, dass auch die Zeichen aus dem Ansi korrekt angezeigt werden.



```
StringBuffer sb = new StringBuffer("");
String[] arr = new String[] {"48", "41", "4C", "4C" ,"4F"};

for (String a : arr ) {
  int c = Integer.parseInt(a,16);
  char chr = (char)c;
  sb.append(chr);
}

System.out.println(sb.toString());
```

gruss sunny


----------



## Ark (7. Feb 2009)

Welche Zeichen tatsächlich erscheinen, hängt vom Zeichensatz ab, der verwendet wird. Windows benutzt z.B. CP1252 (das, was du hier wohl als "ANSI" bezeichnest), aber die hässliche Eingabeaufforderung benutzt CP850, bildet auf sonst gleiche Codes andere Zeichen ab. Linux verwendet dageegn z.B. Unicode, und da würde vermutlich wieder etwas ganz anderes erscheinen.

Ark


----------

