圧縮始めました
とりあえず、超基本のランレングスを…。
「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()