Сжать строку в двоичный файл, а затем преобразовать в базу 62? - PullRequest
1 голос
/ 23 декабря 2011

Я хотел бы знать, смогу ли я сэкономить немного места, сжимая небольшие строки предложений, для которых мне нужно использовать основание 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);

Я бы предположил, что база 62 будет занимать меньше места, чем ASCII-версия двоичного файла.

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

Нет.Без ограничения содержимого произвольная строка содержит 8 бит данных на символ, а base62 ограничивает вас до 6 бит на символ, поэтому вы получите расширение примерно на 25%, сделав это.

Вам потребуется использовать реальный алгоритм сжатия (например, deflate) для сжатия данных.

0 голосов
/ 23 декабря 2011

Для более длинных текстов вы можете использовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...