さて、現在、次のような不明な数の構造体を含むバイナリ ファイルがあります。
private struct sTestStruct
{
public int numberOne;
public int numberTwo;
public int[] numbers; // This is ALWAYS 128 ints long.
public bool trueFalse;
}
これまでのところ、次を使用してすべての構造体を List<> に読み込みます。
List<sTestStruct> structList = new List<sTestStruct>();
while (binReader.BaseStream.Position < binReader.BaseStream.Length)
{
sTestStruct temp = new sTestStruct();
temp.numberOne = binReader.ReadInt32();
temp.numberTwo = binReader.ReadInt32();
temp.numbers = new int[128];
for (int i = 0; i < temp.numbers.Length; i++)
{
temp.numbers[i] = binReader.ReadInt32();
}
temp.trueFalse = binReader.ReadBoolean();
// Add to List<>
structList.Add(temp);
}
一度に 1 つの構造体しかユーザーに表示できないため、一度に複数のレコードを読み取る意味がないため、これはあまりしたくありません。したがって、次のようなものを使用して特定のレコードを読み取ることができると考えました。
fileStream.Seek(sizeof(sTestStruct) * index, SeekOrigin.Begin);
しかし、sTestStruct のサイズがわからないため、配列のサイズを事前に定義することはできません。