Je développe depuis quelques mois un logiciel de création de sprites on-calc (pas très utile me direz vous, mais en fait ce projet fait parti d'un autre projet d'une toute autre envergure

Ceux qui m'ont aidé au début du développement de ce programme se souviennent peut être que je planchais alors sur le système de sauvegarde. J'ai résolu le problème de l'époque (à savoir réussir à changer le format du fichier créé pour lui appliquer ma propre extension) depuis longtemps, mais un autre problème persiste:
Pour sauvegarder le sprite, composé de pixels noirs et blancs, je me suis juste contenté de créer un fichier texte dont j'ai changé l'extension et qui n'est composé que de caractères "0" et "1".
Ca marche très bien et c'est rapide, mais bon le problème est que ça prend bien évidement beaucoup de place (8 fois plus que si je réussissais à manipuler directement les bits plutot que les octets).
J'en arrive donc à ma question:
Comment faire pour envoyer au fichier créé par mon système de sauvegarde des bits et non des octets?
J'ai pensé à un autre système:
-Réunir les caractères "1" et "0" huit par huit.
-Créer ainsi une chaine binaire.
-La converture en base 255 et stocker le caractère correspondant dans mon fichier.
Voila, comment faire et quelle est la technique la plus envisageable selon vous?
Enfin, connaissez vous un système de compression d'images qui pourrait s'appliquer à mes sprites (le RLE est quasi-inutile sur des images de cette taille, et ne ferait qu'augmenter la taille de mon fichier)?
Merci beaucoup d'avance et à bientôt!
EDIT: Une faute d'orthographe m'avais échappé
