gpt4 book ai didi

java - Android - 字符串缩短方法

转载 作者:行者123 更新时间:2023-12-01 12:01:04 28 4
gpt4 key购买 nike

我目前正在 Android 上开发一款营销应用程序,该应用程序具有通过短信发送 URL 的功能。因为我使用的是短信,所以我希望使文本尽可能短,这样它就不会被分成几个部分。

URL 由应用程序动态生成。不同的联系人会产生不同的 URL,因为应用程序会将一些“联系人相关信息”添加到 URL 中。并且此信息是需要缩短的信息,而不是基本 URL

我尝试使用 Base64 来缩短字符串,但它不起作用。

之前
文字:我自己|1234567890
长度:17

之后
文本:TXlzZWxmfDEyMzQ1Njc4OTA=
长度:25

然后我尝试了 Deflater ,结果比 Base64 更好,但仍然没有缩短字符串。

之前
文字:我自己|1234567890
长度:17

之后
文本:x��,N�I�1426153��4����3��
长度:24

我也尝试过 GZIP ,结果比其他方法差很多。

之前
文字:我自己|1234567890
长度:17

之后
文本:����������������,N�I��1426153��4�����w��������
长度:36

比较测试结果后,我决定使用Base64,因为它有时可以工作,但我完全不满意。谁能给我更好的方法吗?

编辑:

我需要在没有互联网连接的情况下离线执行此字符串缩短。对于这种突然的改变,我感到非常抱歉,因为我们的开发团队是这样决定的。有什么想法吗?

最佳答案

Base64 本身不起作用,因为它通常会增加编码字符串的长度约 37%

Deflater 和 GZIP 都包含会增加短字符串长度的 header 。

但是,您可以使用 Huffman codingArithmetic coding 来利用某些字符在 URL 中比其他字符更常见的事实。通过生成大约一千个字符串并对每个字符的出现次数进行求和,为字符串生成频率表,然后根据这些频率生成霍夫曼编码表。然后,您可以使用此硬编码表对字符串进行编码和解码:不要将表与消息一起传输。

Here is an interactive webpage 允许您输入各种字符串并对它们进行霍夫曼编码:您可以使用 URL 进行尝试,以大致了解您可以期望的压缩率,但实际上您会得到稍低的压缩率如果您对所有字符串使用同一个表。对于示例文本“Myself|1234567890”,霍夫曼编码字符串的大小是原始字符串的 51%。

生成霍夫曼编码字符串后,您可能需要对其进行另一次传递,以转义无法在 SMS 中传输的任何非法字符(或者仅对您的霍夫曼编码字符串进行 Base64 编码),这可能会抵消您节省的费用哈夫曼编码有点,但希望你最终仍能节省净钱。

如果您使用 Huffman 编码获得 50% 左右的压缩率,然后对结果进行 Base64 编码(再次增加大小),您最终得到的结果仍将比原始结果小 30% 左右。

关于java - Android - 字符串缩短方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27979260/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com