600 Stimmen

Wie konvertiert man einen Java-String in ein Byte[]?

Gibt es einen Weg, Java String in ein byte[] zu konvertieren (nicht das verpackte Byte[])?

Wenn ich dies versuche:

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 separate Ausgaben. Kann die erste Ausgabe nicht anzeigen, da es sich um einen gzip-String handelt.

******
[B@38ee9f13

Die zweite ist eine Adresse. Mache ich etwas falsch? Ich brauche das Ergebnis in einem byte[], um es dem Gzip-Dekompressor zuzuführen, der wie folgt aussieht.

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());
}

8voto

Lucas Hoepner Punkte 1427

Du könntest versuchen return new String(byteout.toByteArray(Charset.forName("UTF-8")))

0voto

Favnir Liorenth Punkte 37

Ich weiß, ich bin ein bisschen spät zur Party, aber das funktioniert ziemlich gut (unser Professor hat es uns gegeben)

public static byte[] asBytes (String s) {                   
           String tmp;
           byte[] b = new byte[s.length() / 2];
           int i;
           for (i = 0; i < s.length() / 2; i++) {
             tmp = s.substring(i * 2, i * 2 + 2);
             b[i] = (byte)(Integer.parseInt(tmp, 16) & 0xff);
           }
           return b;                                            //return bytes
    }

-1voto

Yardack Punkte 7

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

Bool DmgrGetVersion (String szVersion);

Char NewszVersion [200];
Strcpy (NewszVersion, szVersion.t_str ());
.t_str () gilt für Builder C ++ 2010

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X