String in hexBinary konvertieren

Hallo,

in einem Java-Programm muss ich eine Zeichenkette (UTF-8) in hexBinary konvertieren. Dazu verwende ich folgenden Algorithmus, den ich im Internet gefunden habe:

String s = "Test"
String result = ""
byte[] ba = s.getBytes()

for (int i=0; i
Das funktioniert soweit auch gut, allerdings muss ich sagen, dass ich nicht genau verstehe, was da passiert. Zunächst ist klar, dass die einzelnen Bytes aus dem String geholt werden. Result ist auch klar, das wird immer konkateniert.

Aber wozu verUNDe ich das Byte mit 0xff, addiere 0x100 und schneide das erste Zeichen weg?

Kann mir das jemand anhand eines Beispiels erklären? :smile:

Grüße,
Robert

Hi,

result = result + Integer.toString((ba[i] & 0xff) + 0x100,
16).substring(1))

Aber wozu verUNDe ich das Byte mit 0xff, addiere 0x100 und
schneide das erste Zeichen weg?

bytes sind in Java „signed“ integers mit einem Wertebereich von -128…127. Wenn man diese mit 0xff verundet, erhaelt man einen int mit einem Wertebereich zwischen 0…255.

Die Werte 0…9 werden auch nur einstellig von toString(i,16) zurueckgegeben, deshalb addiert man 0x100 und schneidet die führende 1 dann spaeter ab.

Gruss
norsemanna

Danke für die hilfreiche Antwort. Jetzt ist es mir klar :smile: