圧縮始めました

とりあえず、超基本のランレングスを…。
「0xff,0xff,0xff」のようなデータを
「0x03,0xff」に圧縮するだけですが、、。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

class Writer:
	def __init__(self, filepath):
		self.f = file(filepath, "wb")
	def putByte(self, b):
		self.f.write("%c"%b)

class Reader:
	def __init__(self, filepath):
		self.f = file(filepath, "rb")
		self.eof = False
	def read(self):
		b = self.f.read(1)
		if b == "":
			self.eof = True
		return b


def main():
	reader = Reader("src.bin") # 元データ
	writer = Writer("dst.bin") # 圧縮データ

	count = 0             # 出現回数
	b     = reader.read()
	prev  = b             # 1つ前のデータ
	while not(reader.eof):
		if b == prev:
			count += 1
		else:
			writer.putByte(count)
			writer.putByte(prev)
			count = 1
		prev = b
		b = reader.read()
	writer.putByte(count)
	writer.putByte(prev)

	print "compression done."

if __name__ == "__main__":
	main()