А в чем проблема-то? Маленьких латинских букв всего лишь 26 < 32 - имеем 4, к примеру, младших, бита. Оставшиеся 4, к примеру, старших бита - количество символов в последовательности + 1 (т.к. бессмыссленно кодировать 0 символов). Т.е. максимальное кол-во повторяющихся символов, закодированных одним байтом у вас будет равно 32.
Т.е. если c - код данного символа, N - кол-во повторов, cc - код, получим:
Код:
cc = ((N-1)<<4) | (c - 'a');