ファイルを共有に分割するアルゴリズムの実装に取り組んでおり、共有の数があります。ファイルサイズに残りがある場合(共有数によるモジュラスの後)、ゼロでパディングしています。今のところ、文字列でこれを行おうとしていますが、それらを再結合する必要がある場合は、余分なパディングを追加します。ファイルと同じですか?それとも、パディングゼロはファイルの内容を変更しませんか?
それが変化した場合、どのゼロがパディングゼロであるかを知る方法はありますか?
ありがとう!
ファイルを共有に分割するアルゴリズムの実装に取り組んでおり、共有の数があります。ファイルサイズに残りがある場合(共有数によるモジュラスの後)、ゼロでパディングしています。今のところ、文字列でこれを行おうとしていますが、それらを再結合する必要がある場合は、余分なパディングを追加します。ファイルと同じですか?それとも、パディングゼロはファイルの内容を変更しませんか?
それが変化した場合、どのゼロがパディングゼロであるかを知る方法はありますか?
ありがとう!
はい、ファイルに何かを追加すると、その内容が変更されます。場合によっては、これはあまり問題にならないかもしれませんが、汎用ソリューションの場合、これに頼るべきではありません。
あなたの特定のケースでは、ファイルをパディングすることは悪い考えです。
すべてのファイル部分が収まる必要がある固定ブロック サイズがある場合、追加されたバイト数を示すバイトをファイル部分に埋め込むことができます。たとえば、パディングとして 7 バイトを追加した場合、すべてのパディング バイトは 0x07 になります。後でパーツを再結合するとき、プログラムは最初にパディングを取り除かなければなりません。与えられた例では、パーツの最後のバイト、つまり 0x07 を読み取り、ファイルの末尾から 7 バイトを削除する必要があると結論付けます。
このアプローチには 2 つの問題があります。
楽しみのためにこれを行っている場合は、split
BSD または GNU/Linux で見つけることができるプログラムのソース コードを見ることができます。ヒント: パディングは必要ありません。