Перейти к содержанию
100% локально

Кодирование длин повторов

Сжимайте повторяющиеся символы в пары число-символ и распаковывайте их обратно.

Входные данные
Выходные данные

Кодирование длин повторов

Кодирование длин повторов заменяет повторяющиеся символы на число и символ: "aaabcc" становится "3a1b2c" — три a, один b, два c. Этот инструмент кодирует текст таким образом и декодирует его обратно полностью в вашем браузере. Это тот же принцип, используемый при факсимильном сжатии, RLE варианте BMP и простых форматах игровых ресурсов: повторяющиеся данные сжимаются значительно, а текст без повторений практически не меняет размер.

Две опции формата контролируют, как записывается каждый повтор: число перед символом (3a) или символ перед числом (a3). Включение "сжимать только повторы длиннее 1" оставляет одиночные вхождения как есть — "aaabcc" становится "3ab2c" вместо "3a1b2c" — что выглядит ближе к тому, как RLE преподается, но требует разделителя, если текст содержит цифры. Разделитель между повторами (запятая, пробел, любой символ) полностью устраняет эту неоднозначность и требуется для режима байтов. "Обрабатывать построчно" предотвращает пересечение повторов между строками, что полезно, когда каждая строка — это отдельная запись.

Режим байтов обрабатывает входные данные как шестнадцатеричные байты вместо текстовых символов — вставьте hex типа "00 00 00 ff" (пробелы игнорируются) и они группируются и сжимаются байт за байтом, как RLE фактически используется на двоичных данных, таких как несжатые строки изображений. Декодирование отражает каждую опцию: выберите тот же формат, разделитель и параметры режима байтов, использованные при кодировании, и исходный текст или hex вернется точно. Живой счетчик показывает длину входа и выхода плюс коэффициент сжатия, так что вы можете сразу увидеть, хороший ли кандидат для кодирования длин повторов вообще.

Все работает локально в вашем браузере — ничто, что вы вставите, не загружается никуда. Скопируйте результат, загрузите его как файл .txt или отправьте вывод прямо обратно на вход, чтобы переключить направление и проверить обратное преобразование.

FAQ

Что на самом деле означает 3a1b2c?
Это означает три a, один b, затем два c — кодирование длин повторов "aaabcc". Число всегда идет с символом, который оно считает, в каком бы порядке ни выбрал параметр формата.
Почему декодирование иногда не работает или производит неправильный текст?
Декодирование предполагает, что формат, разделитель и параметры режима байтов соответствуют тому, что использовалось при кодировании. Если исходный текст содержит символы цифр и разделитель не использовался, цифры могут быть неправильно интерпретированы как часть числа — добавьте разделитель, чтобы избежать этого.
Когда кодирование длин повторов действительно полезно?
На данных с длинными повторяющимися последовательностями — строки одноцветных изображений, байты заполнения, повторяющиеся символы логов — он значительно сжимает выход. На типичном прозаическом тексте он обычно увеличивает выход, так как большинство символов не повторяются.
Для чего нужен режим байтов?
Он обрабатывает входные данные как шестнадцатеричные байты вместо текста, так что вы можете кодировать двоичные данные методом RLE (вставляется как hex) так, как это делают форматы изображений и факсов, байт за байтом вместо символа за символом.
Мой текст загружается куда-то?
Нет. Кодирование и декодирование выполняются полностью в вашем браузере — ничего, что вы введете или вставите, никогда не покидает ваше устройство.