it-swarm.com.de

Wie konvertiere ich Java String in Byte []?

Gibt es eine Möglichkeit, Java String in einen byte[] umzuwandeln (not the boxed Byte[])?

Wenn Sie dies versuchen:

System.out.println(response.split("\r\n\r\n")[1]);
System.out.println("******");
System.out.println(response.split("\r\n\r\n")[1].getBytes().toString());

und ich bekomme getrennte Ausgänge. Die erste Ausgabe kann nicht angezeigt werden, da es sich um eine gzip-Zeichenfolge handelt.

<A Gzip String>
******
[[email protected]

Die zweite ist eine Adresse. Was mache ich falsch? Ich brauche das Ergebnis in einem byte[], um es dem gzip-Dekomprimierer zuzuführen.

String decompressGZIP(byte[] gzip) throws IOException {
    Java.util.Zip.Inflater inf = new Java.util.Zip.Inflater();
    Java.io.ByteArrayInputStream bytein = new Java.io.ByteArrayInputStream(gzip);
    Java.util.Zip.GZIPInputStream gzin = new Java.util.Zip.GZIPInputStream(bytein);
    Java.io.ByteArrayOutputStream byteout = new Java.io.ByteArrayOutputStream();
    int res = 0;
    byte buf[] = new byte[1024];
    while (res >= 0) {
        res = gzin.read(buf, 0, buf.length);
        if (res > 0) {
            byteout.write(buf, 0, res);
        }
    }
    byte uncompressed[] = byteout.toByteArray();
    return (uncompressed.toString());
}
492
Mkl Rjv

Das Objekt, das Ihre Methode decompressGZIP() benötigt, ist ein byte[].

Die grundlegende, technische Antwort auf die von Ihnen gestellte Frage lautet:

byte[] b = string.getBytes();
byte[] b = string.getBytes(Charset.forName("UTF-8"));
byte[] b = string.getBytes(StandardCharsets.UTF_8); // Java 7+ only

Das Problem, mit dem Sie scheinbar zu kämpfen haben, ist jedoch, dass dies nicht sehr gut angezeigt wird. Wenn Sie toString() aufrufen, erhalten Sie nur die Standardeinstellung Object.toString(), bei der es sich um den Klassennamen + die Speicheradresse handelt. In Ihrem Ergebnis [[email protected] bedeutet [Bbyte[] und 38ee9f13 ist die Speicheradresse, die durch einen @ getrennt ist.

Zu Anzeigezwecken können Sie Folgendes verwenden:

Arrays.toString(bytes);

Dies wird jedoch nur als Folge von durch Kommas getrennten Ganzzahlen angezeigt, die möglicherweise nicht Ihren Wünschen entsprechen.

Um ein lesbares String von einem byte[] zu erhalten, verwenden Sie:

String string = new String(byte[] bytes, Charset charset);

Der Grund, warum die Charset -Version bevorzugt wird, ist, dass alle String -Objekte in Java intern als UTF-16 gespeichert werden. Bei der Konvertierung in einen byte[] erhalten Sie je nach gewähltem Zeichensatz eine unterschiedliche Aufteilung der Bytes für die angegebenen Glyphen dieses String.

888
Stewart
  String example = "Convert Java String";
  byte[] bytes = example.getBytes();
50
Prabhakaran

Versuchen Sie es mit String.getBytes (). Es gibt ein Byte [] zurück, das Zeichenfolgendaten darstellt. Beispiel:

String data = "sample data";
byte[] byteData = data.getBytes();
14
Ankur Shanbhag

Einfach:

String abc="abcdefghight";

byte[] b = abc.getBytes();
14
Bhavesh

Sie können String.getBytes() verwenden, wodurch das Array byte[] zurückgegeben wird.

11
Vimal Bera

Sie könnten versuchen, return new String(byteout.toByteArray(Charset.forName("UTF-8")))

7
Lucas Hoepner

Es ist nicht erforderlich, Java als String-Parameter zu ändern. Sie müssen den c-Code ändern, um einen String ohne Zeiger und in seinem Code zu erhalten:

Bool DmgrGetVersion (String szVersion);

Char NewszVersion [200];
Strcpy (NewszVersion, szVersion.t_str ());
.t_str () applies to builder c ++ 2010
1
Yardack