Ich habe ein Problem, einige Konvertierungen für einige Daten. Ich bekomme eine Antwort von einer Anfrage, die Base64-kodierte Bytes enthält und ich möchte sie in Hexa bekommen.Mehrere Datenkonvertierung mit groovy
Dies ist ein String-Typ:
log.info "type data base 64 : " + dataBase64.getClass().getName()
INFO:type data base 64 : java.lang.String
Dann dekodieren ich es:
data = dataBase64.decodeBase64()
log.info "type data : " + data.getClass().getName()
INFO:type data : [B => ?? there is something strange here
log.info "data = " + data
INFO:data = [0, 33, 0, 0, -74, 0, 16, 0, 0, 1, 0, 10, 3, 0, 0, 0, 28, 120, -45, 28, 90, 95, 25, -14, -119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
ich diese Daten in Bytes wollen, um eine Adresse in Bytes zu erholen 22 bis 24 Wenn ich tun
log.info "dataHex = " + data.encodeHex()
INFO:dataHex = 00210000b60010000001000a030000001c78d31c5a5f19f289ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01000000000000000000000000000000000000000000000000000000000000000000000000000000
ich möchte den 19f289
Teil erholen. Das Problem ist, dass ich keine Daten [22], um Daten konvertieren [24] data[22].encodeHex
ausfallen (die Daten [22] Typ Byte ist das Byte nicht [])
Wenn ich versuche, toHexString auf jedes Byte erforderlich zu verwenden, I ein Problem auftritt, wenn negative Werte
for (i=22;i<25;i++)
{
myInt = data[i]
log.info Integer.toHexString(myInt)
}
gibt
INFO:19
INFO:fffffff2
INFO:ffffff89
Handhabung
gibt es eine saubere Art und Weise, dies zu tun? Ich könnte versuchen, den Teil von dataHex nach der Umwandlung in String zu extrahieren (ich habe es noch nicht ausprobiert), aber ich verstehe nicht, warum ich einfach ein Byte umwandeln kann
auf hexadezimal, wenn jemand weiß, ...