我怎么能压缩字符串iphone

时间:2011-04-17 03:39:33

标签: iphone objective-c ios ios4

如何在i手机中压缩字符串

像 “AmfkF04njgfdlnre4wp [fnv4s / sif03jgndlkrjrtyuiocvbnjm78dcfghjk89tgb dfgyhuic89vbnyhncvghj8ujmokjnfgbijk98nfgh0978njvcg9h08065yejktgb45ncvghyuitg45hnmpokjnb65yhjcvgf4354g3hjok / mnbcfghjkuh45jcfgh45dfv23bn”(200个charecters)

更短的发送短信

如果我发送需要发送2条短信我需要的短信,假设1条短信只能发送170个字符 通过压缩文本以适应1条短信,只发送1条短信。

我只是希望字符串更短以便于发送,压缩后可能无法读取。 但解压后需要相同。

我尝试阅读this,但它对我没有任何帮助。

谢谢。

1 个答案:

答案 0 :(得分:2)

如果您希望jfghirehgirl表示Hello world 5555 hello world google,那么您可以使用哈希或字典:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"Hello world 5555 hello world google", @"jfghirehgirl", nil];

然后,查找jfghirehgirl将为您提供原始更长的字符串。

基于经典替换的压缩。

如果你想进行算法转换,gzip就是最易于访问的通用压缩算法。它也恰好被大多数常见协议“在线上”支持。鉴于缺乏背景,很难说更多。


好的 - 最后 - 一个具体的问题:

  

像   “AmfkF04njgfdlnre4wp [fnv4s / sif03jgndlkrjrtyuiocvbnjm78dcfghjk89tgb   dfgyhuic89vbnyhncvghj8ujmokjnfgbijk98nfgh0978njvcg9h08065yejktgb45ncvghyuitg45hnmpokjnb65yhjcvgf4354g3hjok / mnbcfghjkuh45jcfgh45dfv23bn”   (200个字符)

看起来非常像你在键盘上撞击。即那里没有信号;这是白噪声。就其本质而言,白噪声不会压缩。

果然,复制并在终端中执行此操作:

pbpaste | gzip --best -f | wc -c
121

收益121个字符。你可能会认为200 - > 121是适当的压缩。它不是;这只是压缩字符的位数。由于SMS具有有限的字符集,因此无论如何都不能使用结果。因此,您需要使用类似base64的编码将其编码回ASCII。

即:

pbpaste > /tmp/foo
python
>>> x = file('/tmp/foo','r').read()
>>> len(x)
121
>>> y = b64encode(x)
>>> len(y)
164

164个字符。不错;甚至可以使用(暂时不能在iPhone上以编程方式读取或编写SMS消息,但用户可以复制/粘贴)。

所以 - gzip,然后base64编码是给出设计信号的具体答案。如果信号更像您要发送的真实信号,则可以给出更好的答案。