2017-11-18 20 views
0

私は学校用のプロジェクトとして大きなプログラムを構築する必要があります。私はwinzip/winrarのようなファイル圧縮について考えてきました。 アルゴリズムの種類とその例について読みましたが、すべての例がアルファベットの文字列 で実装されていて、ファイルが文字列ではないため、助けにはならないという問題があります。 たとえば、ファイルがある場合 - "0111000110111001" どうすれば圧縮できますか?バイナリ数字圧縮

+0

連続して0または1を指定するとどうなりますか?あなたは "0"と "1"の文字列を意味しますか?値が0または1のバイト、または一連のビット?これらの値によって表されているデータ構造は何ですか? – trincot

答えて

0

アルファベットの文字列を使用している例でも、マシンレベルでは0と1の連続が続きます。これらの例をバイナリファイルに適用する場合は、または単語ごとにこのようにして、アルファベットの文字列で見たことは引き続き利用できます。

+0

私は何かを見逃してしまったように感じます。私はそれを見ています。ファイル - 最終的には、0と1の連続で、いくらか記憶に格納されています。ファイルのビット数が多いほどサイズが大きくなります。 圧縮のすべての例は、アルファベット/数字の文字列を話し、短いアルファベット/数字コードに圧縮する方法を示していますが、バイナリの継承で試してみると、サイズがそれだけ長くなります。 私はファイルのビットを取って、実際のサイズよりも連続した長さを短くして、サイズがそれだけ小さくなるようにします。 –

+0

ファイルをどのように読んでいますか?バイト単位のバイト?または?どのような種類の圧縮を使用しますか?ほとんどの場合、文字列を圧縮するメソッドは、バイナリファイルの圧縮には適していません。 –

+0

私が知っている唯一の知っている唯一の方法は、Byteの後にバイナリファイルByteを読み込むことです。 しかし、ファイル内の単一のバイトを読み取っても、どうすれば圧縮できますか? 今のところ、私はバイナリファイルを読むためにC言語を使いますが、 "fread"と "fwrite"のパラメータがバイトとして最小サイズを受け入れるので、おそらく私はWord(16bit)を読み込み、圧縮しようと考えていますそれはByteには当てはまりますが、バイナリシステムにアルゴリズムを実装する方法はわかりません。 –