Java Byte-Array zu String zu Byte-Array
Ich versuche, ein Byte[] zu String, String-Darstellung von Byte[] zu Byte[] Konvertierung zu verstehen... Ich konvertiere meine byte[] zu einer Zeichenfolge zu senden, ich erwarte dann meine Web-Service (in Python geschrieben), um die Daten direkt zurück an den Client Echo.
Wenn ich die Daten aus meiner Java-Anwendung sende...
Arrays.toString(data.toByteArray())
Zu sendende Bytes...
[B@405217f8
Senden (Dies ist das Ergebnis von Arrays.toString(), das eine String-Repräsentation meiner Byte-Daten sein sollte, diese Daten werden über die Leitung gesendet):
[-47, 1, 16, 84, 2, 101, 110, 83, 111, 109, 101, 32, 78, 70, 67, 32, 68, 97, 116, 97]
Auf der Python-Seite gibt der Python-Server eine Zeichenkette an den Aufrufer zurück (die, wie ich sehen kann, mit der Zeichenkette übereinstimmt, die ich an den Server geschickt habe
[-47, 1, 16, 84, 2, 101, 110, 83, 111, 109, 101, 32, 78, 70, 67, 32, 68, 97, 116, 97]
Der Server sollte diese Daten an den Client zurückgeben, wo sie überprüft werden können.
Die Antwort, die mein Client erhält (als String), sieht so aus
[-47, 1, 16, 84, 2, 101, 110, 83, 111, 109, 101, 32, 78, 70, 67, 32, 68, 97, 116, 97]
Ich kann nicht herausfinden, wie ich die empfangene Zeichenkette zurück in ein byte[]
Egal, was ich versuche, ich erhalte ein Byte-Array, das wie folgt aussieht...
[91, 45, 52, 55, 44, 32, 49, 44, 32, 49, 54, 44, 32, 56, 52, 44, 32, 50, 44, 32, 49, 48, 49, 44, 32, 49, 49, 48, 44, 32, 56, 51, 44, 32, 49, 49, 49, 44, 32, 49, 48, 57, 44, 32, 49, 48, 49, 44, 32, 51, 50, 44, 32, 55, 56, 44, 32, 55, 48, 44, 32, 54, 55, 44, 32, 51, 50, 44, 32, 54, 56, 44, 32, 57, 55, 44, 32, 49, 49, 54, 44, 32, 57, 55, 93]
oder ich kann eine Byte-Darstellung erhalten, die wie folgt aussieht:
B@2a80d889
Beide unterscheiden sich von meinen gesendeten Daten... Ich bin sicher, ich übersehe etwas wirklich einfaches....
Irgendeine Hilfe?!
Sie können nicht einfach die zurückgegebene Zeichenkette nehmen und eine Zeichenkette daraus konstruieren... es ist kein
Byte[]
Datentyp mehr, es ist bereits eine Zeichenkette; Sie müssen sie parsen. Zum Beispiel :Mit "Arrays.toString()" wird eine Zeichenkettendarstellung für jedes einzelne Byte in Ihrem ByteArray erstellt.
Bitte lesen Sie die API-Dokumentation Arrays API
Um die Antwortzeichenkette wieder in das ursprüngliche Byte-Array umzuwandeln, müssen Sie
split(",")
oder etwas Ähnliches verwenden und es in eine Sammlung umwandeln und dann jedes einzelne Element darin in ein Byte umwandeln, um Ihr Byte-Array neu zu erstellen.Können Sie die Bytes nicht einfach als Bytes senden, oder jedes Byte in ein Zeichen umwandeln und als Zeichenkette senden? Wenn Sie so vorgehen, benötigt die Zeichenkette mindestens 85 Zeichen, obwohl Sie nur 11 Bytes zu senden haben. Sie könnten eine String-Darstellung der Bytes erstellen, also "[B@405217f8", die leicht in ein
bytes
- oderbytearray
-Objekt in Python umgewandelt werden kann. Andernfalls könnte man sie als eine Reihe von hexadezimalen Ziffern darstellen ("5b42403430353231376638"), die 22 Zeichen umfassen, die auf der Python-Seite mitbinascii.unhexlify()
leicht dekodiert werden könnten.