4

文字列値を圧縮したい。.netこれらの文字列値は、圧縮された文字列と同じである必要があります。

Decompressメソッドを作成しましたが、圧縮された文字列をそれに送信すると.net、正しく機能します。しかし、Compressメソッドは正しく機能しません。

public static String Decompress(String zipText) throws IOException {
    int size = 0;
    byte[] gzipBuff = Base64.decode(zipText);

    ByteArrayInputStream memstream = new ByteArrayInputStream(gzipBuff, 4,
            gzipBuff.length - 4);
    GZIPInputStream gzin = new GZIPInputStream(memstream);

    final int buffSize = 8192;
    byte[] tempBuffer = new byte[buffSize];
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    while ((size = gzin.read(tempBuffer, 0, buffSize)) != -1) {
        baos.write(tempBuffer, 0, size);
    }
    byte[] buffer = baos.toByteArray();
    baos.close();

    return new String(buffer, "UTF-8");
}
public static String Compress(String text) throws IOException {
    byte[] gzipBuff = EncodingUtils.getBytes(text, "UTF-8");

    ByteArrayOutputStream bs = new ByteArrayOutputStream();
    GZIPOutputStream gzin = new GZIPOutputStream(bs);

    gzin.write(gzipBuff);
    gzin.finish();
    bs.close();

    byte[] buffer = bs.toByteArray();
    gzin.close();

    return Base64.encode(buffer);
}

For example when I send "BQAAAB+LCAAAAAAABADtvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++997o7nU4n99//P1xmZAFs9s5K2smeIYCqyB8/fnwfPyLmeVlW/w+GphA2BQAAAA==" to Decompress method It returns the string "Hello", but when I send "Hello" to Compress method It returns "H4sIAAAAAAAAAMtIzcnJBwCGphA2BQAAAA= =

Compressメソッドの問題は何ですか????

4

2 に答える 2

0

私はJava vmで試しましたが、結果は同じだと思います。Compress メソッドの最後で次の行を使用します。

return new String(base64.encode(buffer), "UTF-8");
于 2011-07-19T13:05:10.323 に答える