2012-04-05 14 views
0

私は共有にファイルを分割し、私は共有の数を持っているアルゴリズムを実装しています。ファイルサイズに余り(共有数のモジュラスの後)がある場合、私はそれをゼロで埋めています。今のところ、私は文字列でこれをやろうとしています。それらを再結合する必要があるときは、余分なパディングを追加します。それはファイルと同じですか?パディングゼロはファイルの内容を変更しませんか?ファイルをパディングして内容を変更しますか?

変更されている場合、どのゼロがパディングゼロであるかを知る方法はありますか?

thanx!

+0

ゼロは1、2、3などと同じように内容です。ファイルにゼロを追加すると、その内容が変更されます。 – NealB

+0

車輪を改造する? –

答えて

0

はい、ファイルに何かを追加すると、その内容が変更されます。場合によってはこれはあまり重要ではないかもしれませんが、汎用ソリューションでは決してそれに頼るべきではありません。

あなたの特定のケースでは、ファイルを埋め込むことは悪い考えです。

すべてのファイル部分が収まる必要がある固定ブロックサイズがあった場合、追加されたバイト数を示すバイトでファイル部分を埋め込むことができます。たとえば、パディングとして7バイトを追加した場合、パディングバイトはすべて0x07になります。あとで部品を再結合すると、プログラムは最初にパディングを取り除く必要があります。与えられた例では、パートの最後のバイト、すなわち0x07を読み込み、7バイトをファイルの最後から除去しなければならないと結論づける。

このアプローチには二つの問題があります。

  • はあなたが達成できる最大パディングは、パディングが必要とされない場合は、ダミー・パディングの完全なブロックを追加する必要があると思います0xffの= 255バイト
  • ですプログラムがパディングバイトと元のコンテンツを区別できないためです。ファイル部分が0x01で終了し、パディングが必要ない場合、結合プログラムはセグメントから最後のバイトを削除し、ファイルを破損させます。

BSDまたはGNU/Linuxで見つかるsplitプログラムのソースコードを見てみると楽しいです。ヒント:パディングは必要ありません。

関連する問題