Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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.
Code:
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();
}
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).
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.
Code:
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());
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.