Komisches Verhalten wenn ich von HexString nach String umwandel!?

  • 1 Antworten
  • Letztes Antwortdatum
C

C3lt1c84

Neues Mitglied
0
Hi nun steh ich vor einem neuen Problem oder ehr gesagt einen Rätzel was ich mir nicht erklären kann :(

Ich habe diese 2 Funktionen schon ausprobiert um einen hex string in einen normale string umzuwandeln

String = "48539e0100000000000010"

Functionen:

public String convertHexToString(String hex){

StringBuilder sb = new StringBuilder();
StringBuilder temp = new StringBuilder();


for( int i=0; i<hex.length()-1; i+=2 ){

//grab the hex in pairs
String output = hex.substring(i, (i + 2));
//convert hex to decimal
int decimal = Integer.parseInt(output, 16);
//convert the decimal to character
sb.append((char)decimal);


}
// System.out.println("Decimal : " + temp.toString());

return sb.toString();
}


public static String hexToString(String hex) {
StringBuilder sb = new StringBuilder();
char[] hexData = hex.toCharArray();
for (int count = 0; count < hexData.length - 1; count += 2) {
int firstDigit = Character.digit(hexData[count], 16);
int lastDigit = Character.digit(hexData[count + 1], 16);
int decimal = firstDigit * 16 + lastDigit;
sb.append((char)decimal);
}
return sb.toString();
}


Aber wenn ich mir dann genau den string dann abspeicher und in einem Hexeditor öffne sehe ich das hier:

48 53 C2 9E 01 00 00 00 00 00 00 10

Warum steht da ne C2 ?? es müsste ja an der stelle die 9e dort stehen
 
Weil Strings im Format UTF-8 gespeichert werden. Das Zeichen 9E wird dann in die zwei bytes C2 9E codiert.
Du kannst deshalb Binärdaten im Allgemeinen nicht als bytes in einem String speichern.
 
Zuletzt bearbeitet:
Zurück
Oben Unten