Кодирование длин повторов
Сжимайте повторяющиеся символы в пары число-символ и распаковывайте их обратно.
Кодирование длин повторов
Кодирование длин повторов заменяет повторяющиеся символы на число и символ: "aaabcc" становится "3a1b2c" — три a, один b, два c. Этот инструмент кодирует текст таким образом и декодирует его обратно полностью в вашем браузере. Это тот же принцип, используемый при факсимильном сжатии, RLE варианте BMP и простых форматах игровых ресурсов: повторяющиеся данные сжимаются значительно, а текст без повторений практически не меняет размер.
Две опции формата контролируют, как записывается каждый повтор: число перед символом (3a) или символ перед числом (a3). Включение "сжимать только повторы длиннее 1" оставляет одиночные вхождения как есть — "aaabcc" становится "3ab2c" вместо "3a1b2c" — что выглядит ближе к тому, как RLE преподается, но требует разделителя, если текст содержит цифры. Разделитель между повторами (запятая, пробел, любой символ) полностью устраняет эту неоднозначность и требуется для режима байтов. "Обрабатывать построчно" предотвращает пересечение повторов между строками, что полезно, когда каждая строка — это отдельная запись.
Режим байтов обрабатывает входные данные как шестнадцатеричные байты вместо текстовых символов — вставьте hex типа "00 00 00 ff" (пробелы игнорируются) и они группируются и сжимаются байт за байтом, как RLE фактически используется на двоичных данных, таких как несжатые строки изображений. Декодирование отражает каждую опцию: выберите тот же формат, разделитель и параметры режима байтов, использованные при кодировании, и исходный текст или hex вернется точно. Живой счетчик показывает длину входа и выхода плюс коэффициент сжатия, так что вы можете сразу увидеть, хороший ли кандидат для кодирования длин повторов вообще.
Все работает локально в вашем браузере — ничто, что вы вставите, не загружается никуда. Скопируйте результат, загрузите его как файл .txt или отправьте вывод прямо обратно на вход, чтобы переключить направление и проверить обратное преобразование.