将字符串压缩为二进制,然后转换为base 62?

时间:2011-12-22 20:24:03

标签: php string compression

我想知道是否可以通过压缩一小段句子来节省一些空间,我必须使用基础62而不是二进制。

$string = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore';

$string = pack("nc*", $string); // Doesn't work

$base62 = gmp_strval(gmp_init($string, 2), 62);

我认为base 62比二进制的ASCII版本占用更少的空间。

2 个答案:

答案 0 :(得分:1)

没有。在不限制内容的情况下,任意字符串每个字符有8位数据,而base62将每个字符限制在略低于6位,因此通过执行此操作,您将获得大约25%的扩展

您需要使用实际压缩算法(例如deflate)来压缩数据。

答案 1 :(得分:0)

对于较长的文本,您可以使用GZip:

php > $string = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore. Lets make the text even longer. And loinger. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do...';
php > echo strlen($string);                                                     
214
php > echo strlen(base64_encode(gzcompress($string, 9)));
164

比照http://www.php.net/manual/de/function.gzcompress.php

相关问题