gpt4 book ai didi

android - 如何在 Android 中压缩字符串

转载 作者:太空狗 更新时间:2023-10-29 16:12:05 25 4
gpt4 key购买 nike

我正在尝试压缩一个大字符串对象。这是我尝试过的方法,但我无法理解如何获取压缩数据,以及如何定义不同类型的压缩工具。

这是我从 Android 文档中得到的。

        byte[] input = jsonArray.getBytes("UTF-8");
byte[] output = new byte[100];

Deflater compresser = new Deflater();
compresser.setInput(input);
compresser.finish();
int compressedDataLength = compresser.deflate(output);
compresser.end();

compresser.deflate(output) 给我一个 int 数字,100

但我无法理解哪种方法可以提供我可以发送给服务的压缩输出。

最佳答案

我用来压缩数据的算法是霍夫曼算法。您可以通过简单的搜索找到它。但在您的情况下,也许它可以帮助您:

public static byte[] compress(String data) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length());
GZIPOutputStream gzip = new GZIPOutputStream(bos);
gzip.write(data.getBytes());
gzip.close();
byte[] compressed = bos.toByteArray();
bos.close();
return compressed;
}

要解压缩它,您可以使用:

public static String decompress(byte[] compressed) throws IOException {
ByteArrayInputStream bis = new ByteArrayInputStream(compressed);
GZIPInputStream gis = new GZIPInputStream(bis);
BufferedReader br = new BufferedReader(new InputStreamReader(gis, "UTF-8"));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
gis.close();
bis.close();
return sb.toString();
}

关于android - 如何在 Android 中压缩字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43735611/

25 4 0
文章推荐: android - React-native 打开另一个应用
文章推荐: 缺少 Android Studio 2.3.1 组件树和调色板
文章推荐: c - 字符串中的垃圾字符
文章推荐: java - 如何在不排序的情况下使用 Comparator 进行升序、降序