Well most of my knowledge is in assembler for 6502's and Z80's, not much uses these days seeing the size of modern programs. It'd take me far to long to write something like this and would most likely only work on either a C64 or a ZX Spectrum.
Wish I was better with C and C++, but I know my limits. I once wrote a compression program in C for my engineering degree that was capable of compressing a 10k text file into 50k.

Should have called it the "Expander". I'd didn't get good marks for that part of the degree.