ランレングス解凍
解凍ルーチンです。
#!/usr/bin/env python # -*- coding: utf-8 -*- import binascii 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 binToInt(b): return int( binascii.b2a_hex(b), 16) def main(): reader = Reader("dst.bin") # 圧縮データ writer = Writer("src.bin") # 解凍データ b = reader.read() while not(reader.eof): count = binToInt(b) b = reader.read() for i in range(count): writer.putByte(b) b = reader.read() print "decompression done." if __name__ == "__main__": main()