私はいくつかのファイル解析を行っています。ここでは、ファイル内の探索領域にマークを付けます。今私はun探検した地域を見つけたいので、次に何を見るべきか分かっています。これは、デフラグソフトウェアがフリーおよび使用済みの領域で示すようなものです。数字の範囲で空の数字の範囲を見つけるアルゴリズムはどれですか?
例:この写真で
、のは赤で、未踏の領域がグレーである領域を探索しているとしましょう。私はこれらの赤い領域から灰色領域境界を決定する必要があります。
私の現在のコード、読まれているものログインするカスタムバイナリリーダー:
public class CustomBinaryReader : BinaryReader {
private readonly List<Block> _blocks;
public CustomBinaryReader([NotNull] Stream input) : this(input, Encoding.Default) { }
public CustomBinaryReader(Stream input, Encoding encoding, bool leaveOpen = true) : base(input, encoding, leaveOpen) {
_blocks = new List<Block>();
}
public override byte[] ReadBytes(int count) {
Log(count);
return base.ReadBytes(count);
}
private void Log(int count) {
_blocks.Add(new Block(BaseStream.Position, count));
}
private IEnumerable<Block> GetUnreadBlocks() {
// how to get unread blocks in the stream, from read blocks ?
throw new NotImplementedException();
}
}
地域が何であるかを定義する型:
public class Block {
public Block(long position, long length) {
Position = position;
Length = length;
}
public long Position { get; }
public long Length { get; }
}
質問:
このような問題(木やグラフのような)を解決するアルゴリズムやデータ構造のクラスはありますか?そのようなことが存在しない場合は、そのような問題を解決するためのアプローチやヒントを教えていただけますか?
画像または生データに基づいていますか? – stybl
これは2つのメンバー、構造体 'position'と 'length'に基づいています – Aybe
人々が助けることができるようにデータを格納するために使用している実際のデータ構造で質問を更新してください –