私はここで私が間違っていることを理解しようとしています。バイナリリーダーを使用して、ストリームから最初の4バイトをInt32値に簡単に取得しようとしています。これにより、残りのデータが予想される期間がわかります。
static void Main(string[] args)
{
MemoryStream stream = new MemoryStream();
BinaryWriter writer = new BinaryWriter(stream);
string s = "Imagine this is a very very long string.";
writer.Write(s.Length);
writer.Write(s);
writer.Flush();
BinaryReader reader = new BinaryReader(stream);
reader.BaseStream.Seek(0, SeekOrigin.Begin);
char[] aChars = new char[reader.ReadInt32()];
reader.Read(aChars, 0, aChars.Length);
Console.WriteLine(new string(aChars));
}
出力は入力である必要がありますが、これを取得します(最初の文字が文字列から文字列に変わることに注意してください)
(これが非常に長い文字列であると想像してください
誰かが私が間違っていることを私に説明できますか?理想的には、2回目の読み取りは、読み取りバイトの合計が最初の4バイトの値と等しくなるまで続きます。このコードは、私が直面している問題を示すための単純化にすぎません。ストリームの位置は正しいようですが(4)、2から読み始めているようです。