Presque tout a été dit en
./4 et
./8, je me permettrai juste d'ajouter une légère optimisation à la proposition de
./4.
En effet, le fait de simplifier « flag|1|flag » par « flag|1 » fonctionne aussi avec une répétition de 2 ou 3 fois le flag en tant que valeur codante, puisque la compression « flag|nbr|byte » n'est utilisée, pour byte != flag, que si nbr > 3 (donc si nbr vaut 1, 2 ou 3, c'est forcément que byte représente flag, donc inutile de le dupliquer).
Mais comme le précise Pollux, cette optimisation en taille du fichier résultant s'accompagne d'un codec (compresseur/décompresseur

) un chouïa plus gros et plus lent.
./9 > Si si, justement, les bytes « isolés » différents de flag (et situés ailleurs que juste après un flag)
sont pris tels quels.