0

このように一連の1と0を圧縮する必要があります

http://cid-f328e92ab80e3d64.office.live.com/self.aspx/.Public/bits.txt

誰もが最高の圧縮を達成するためにどのコーダーをユーザーに提案できますか(ハフマン、算術、BWT、LZW、RLE、PAQ ...)

どんな助けでもありがたいです、そして前もってありがとう。

敬意を表して、チャッキー

PS私はbwtmixが577バイトに下がることを発見しました、しかしそれはc ++で書かれていて、私はそれをcで必要とします。

4

1 に答える 1

0

このPythonプログラムは、1と0をバイトに変換するだけで、16ビットの先行カウントを含めて715バイトに圧縮します。残念ながら、標準の圧縮プログラムzip、gzip、およびbzip2は、それ以上の圧縮を取得できないようです。


import sys, struct
i, n, b, count = 0, 0, '', 0
for byte in open('/tmp/binary.txt').read().rstrip():
 n = (n << 1) | (ord(byte) & 1)
 i = (i + 1) % 8
 if i == 0:
  n, b = 0, b + chr(n)
 count += 1
sys.stdout.write(struct.pack('<h', count) + b)
于 2011-03-03T09:10:01.783 に答える