Я написал программу для выполнения кодирования длин серий. В типичном сценарии, если текст
AAAAAABBCDEEEEGGHJ
кодирование длины пробега сделает это
A6B2C1D1E4G2H1J1
но он добавлял дополнительный 1 для каждого неповторяющегося символа. Поскольку я сжимаю с его помощью файлы BMP, я решил поставить маркер «$», чтобы обозначить появление повторяющегося символа (при условии, что файлы изображений содержат огромное количество повторяющегося текста).
Так это будет выглядеть
$A6$B2CD$E4$G2HJ
Для текущего примера его длина одинакова, но есть заметная разница для файлов BMP. Теперь моя проблема в расшифровке. Так получилось, что некоторые файлы BMP имеют шаблон $<char><num>
, т.е. $I9
в исходном файле, поэтому в сжатом файле я также буду содержать тот же текст. $I9
, однако при декодировании он будет рассматривать его как повторяющуюся I, которая повторяется 9 раз! Таким образом, он производит неправильный вывод. Что я хочу знать, так это то, какой символ я могу использовать для обозначения начала повторяющегося символа (запуска), чтобы он не противоречил исходному источнику.